Как получить объект из списка в setOnItemClickListener в Android? - PullRequest
16 голосов
/ 16 августа 2011

Я добавил arraylist в arrayadapter, который содержит объекты, каждый из которых состоит из двух элементов / элементов, я успешно установил этот адаптер для setListAdapter, теперь я хочу получить эти элементы в setOnItemClickListener listview.

вот мойкод

   TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);       
   setListAdapter(adaptor); 
   ListView lv = getListView();
   lv.setTextFilterEnabled(true);
   lv.setOnItemClickListener(new OnItemClickListener() 
   {
   public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
   {
     //here i want to get the items             
   }
 });

Ответы [ 7 ]

52 голосов
/ 28 августа 2012
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    int color = parent.getAdapter().getItem(position);
}
6 голосов
/ 16 августа 2011
public void onItemClick(AdapterView<?> parent, View view,int position, long id){
    something = tweets[position];
}
2 голосов
/ 30 декабря 2014

и если у вас есть готовый просмотр списка со всеми данными и вы хотите получить значение только для объекта, используйте:

ViewGroup row = (ViewGroup) listprod.getChildAt(0);
TextView tvTest = (TextView) row.findViewById(R.id.textnomprod);

Где мой просмотр списка " listprod " и я хочу получитьзначение в позиции 0 , где textnomprod - это мой объект, и я сохраняю его в своей переменной tvTest

2 голосов
/ 16 августа 2011

Вы хотите получить предметы и что с ними делать?

Например, вы можете сделать тост-сообщение вроде этого.

public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    {
        Toast.makeText(getApplicationContext(), tweets[position], Toast.LENGTH_SHORT).show();

    }

Надеюсь, это поможет.

0 голосов
/ 12 сентября 2017

Я решил эту проблему, используя установленный для него адаптер.

TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);       
setListAdapter(adaptor); 
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() 
{
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
   {    
        //here i want to get the items  
        adaptor.getItem(position);   // this is your object
    }
});

Помните, что адаптер должен быть инициализирован и установлен в ListView.

Таким образом, вы можете получить доступ к свойствам нужного вам объекта.

0 голосов
/ 13 июня 2017
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
        Windows clickedObject = adapter.get(position);
    }
}

Рассмотрим в примере выше,

  • объект, используемый в представлении списка, называется Windows ,
  • объект элемента, выбранный в списке, называется clickedObject ,
  • используемый массив называется адаптер .

Кроме того, убедитесь, что к вашему ArrayList добавлен префикс final .

0 голосов
/ 17 февраля 2013

getListView().getItemAtPosition(position) вернет Object в вашем TweetListAdaptor

...