2013-03-16 3 views
4

Я использую onItemClickListener() со списком. Я хочу передать имя выбранного элемента и произвольное число для следующего экземпляра списка. Как это может быть сделано? Edit: здесь есть класс:onItemClickListener(), как передать данные щелкнутого элемента?

public class ListViewA extends Activity{ 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ListView lv= (ListView)findViewById(R.id.listview); 

     // create the grid item mapping 
     String[] from = new String[] {"col_1"}; 
     int[] to = new int[] {R.id.item2}; 

     // prepare the list of all records 
     List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>(); 
     for(int i = 0; i < 10; i++){ 
      HashMap<String, String> map = new HashMap<String, String>(); 
      map.put("col_1", "col_1_item_" + i); 
      fillMaps.add(map); 
      lv.setOnItemClickListener(onListClick); 
     } 

     // fill in the grid_item layout 
     SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.grid_item, from, to); 
     lv.setAdapter(adapter); 
    } 
    private AdapterView.OnItemClickListener onListClick=new AdapterView.OnItemClickListener(){ 
    public void onItemClick(AdapterView<?> parent,View view, int position, long id) 
    { 
     Intent i=new Intent(ListViewA.this,ListViewA.class); 
     startActivity(i); 
    } 

}; 
} 
+0

Укажите код, чтобы мы могли помочь вам. Какой тип адаптера вы используете? Вы используете пользовательский адаптер? – Reda

+0

, пожалуйста, добавьте более подробную информацию для получения соответствующего ответа. разместите часть своего фрагмента кода для лучшей помощи. – Raj

+0

, пожалуйста, добавьте свой метод itemclick. –

ответ

5

Следующий пример показывает, как передавать данные onItemClick для конкретной позиции.

ListView lv = getListView(); 

      // listening to single list item on click 
      lv.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 

        // selected item 
       HERE YOU GOT POSITION FOR PERTICULAR ITEM 

        // Launching new Activity on selecting single List Item 
        Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
        // sending data to new activity 
        i.putExtra("position", fillMaps.get(position)); 
        startActivity(i); 

       } 
      }); 

И да, вы должны объявить fillMaps в глобальном масштабе.

public class ListViewA extends Activity{ 

    List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>(); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);...... 
+0

Я получаю эту ошибку: fillMaps не может быть разрешен. Я думаю, что это потому, что Intent находится в другом классе. Как это решить? Благодарю. –

+0

@ankitrawat объявляет ваши fillMaps как глобально. –

+0

Я обновляю свой ответ, пожалуйста, обратитесь к нему. –

0

В этом методе третий аграмент - это положение. Поэтому вы должны использовать это, например. Атрибут Arraylist, который вы передаете в listView, содержит данные, отображаемые в спискеView. поэтому использовать этот вид кода

@Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
     // TODO Auto-generated method stub 
    String data= mArrlist.get(position); 
    } 

Если вы используете arralist строкового типа в противном случае если вы используете ArrayList газопоглощающего класса сеттера затем использовать

mArralist.get(potion).getName(); 
+0

Спасибо за ответ и как передать произвольное число? –

+0

Вы можете использовать случайный класс для этого объекта. int random = mRandom.nextInt (mArrayList.size()); –

2
Intent i=new Intent(ListViewA.this,ListViewA.class); 
i.putExtra("Key", fillMaps.get(position)); 

startActivity(i); 

Вы можете использовать выше коду ваш onItemClickListner.

0

Вы должны получить пункт @paticular позиции

HashMap<String, String> item = adapterview.getAdapter().getItem(position); 

проверить состояние в соответствии с требованиями и получения данных из item и процесса дальнейшего.

Intent i=new Intent(ListViewA.this,ListViewA.class); 
i.putExtra("item", item); 
startActivity(i); 
0

Для добавления произвольного числа можно использовать случайный класс Java, как показано ниже
Random mRandom = новый Random(); int random = mRandom.nextInt (mMoveToList.size());

случайная переменная типа int возвращает каждый раз случайное значение.

+0

Число не случайное, это счетчик .. –

0

вы можете использовать getItem(int position) из SimpleAdapter

  1. поместить переменную SimpleAdapter adapter как глобальное
  2. в вашем ClickListener вызова adapter.getItem(position)
Смежные вопросы