Получить конкретное свойство элемента в onListItemClick() с помощью настраиваемого ArrayAdapter <>
У меня есть ListActivity
, который отображает список результатов поиска, которые я извлекаю из веб-службы из Интернета. Я анализирую XML, который я получаю, в ArrayList<MyObjects>
, который затем привязываю к ListView
с помощью моего собственного адаптера (как в MyObjectAdapter
extends ArrayAdapter<MyObject>
).
Итак, я хочу, чтобы пользователь мог нажать на один из элементов в списке. Каждый элемент имеет идентификатор, который затем будет помещен в намерение и отправлен в новое действие (которое затем запускает новый запрос веб-службы на основе этого, загружает остальную часть данных). Но я не знаю, как получить это свойство из MyObject
, которое было выбрано.
Здесь используется метод onListItemClick()
:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String myObjectId;
// I want to get this out of the selected MyObject class here
Intent i = new Intent(this, ViewObject.class);
i.putExtra("identifier_key", myObjectId);
startActivityForResult(i, ACTIVITY_VIEW);
}
Ответы
Ответ 1
Если вы используете ArrayAdapter, вы должны инициализировать этот адаптер с помощью массива, правильно? Итак, чем лучше вы можете сделать, тем лучше использовать postition
, который вы получаете от onListItemClick
, и взять объект из исходного массива.
Например:
// somewhere you have this
ArrayList<MyObjects> theItemsYouUsedToInitializeTheArrayAdapter;
// and inside onListItemClick....
String myObjectId = theItemsYouUsedToInitializeTheArrayAdapter.get(position).getObjectId();
Ответ 2
попробуйте getIntent().getExtras().getString(key);