Получить конкретное свойство элемента в 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);