У меня есть POJO, в котором описывается какая-то модель (предмет?) и какой-то пользовательский адаптер.
Я устанавливаю свой адаптер для ListView, а затем в onItemClick() я хочу получить значение одной из переменных, которые я добавил в элемент.
Как я могу достичь этого?
В моем коде я делаю что-то вроде:
private List<SomeItem> items = new ArrayList();
items.add(new SomeItem(firstValueString, secondValueBitmap, thirdValueString));
SomeAdapter adapter = new SomeAdapter(this, R.layout.list_item, items);
listView.setAdapter(adapter);
listView.setOnItemClickListener(
...
@Override
public void onItemClick(){
//How to reach for example firstValueString value of currently clicked item??
}
)
Используйте android.widget.AdapterView.OnItemClickListener
:
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.d(LOG_TAG, "itemClick: position = " + position + ", id = "
+ id);
SomeItem item = items.get(position); // specific item
}
});
На основе документации Android SDK:
Implementers can call getItemAtPosition(position) if they need to access the data associated with the selected item.
Если вы полностью реализуете свой адаптер, вы можете получить такой элемент, как ниже:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Item item = (Item)parent.getItemAtPosition(position);
}
});
именно то, что мне нужно.