2012-06-25 3 views
0

Вверху: Это моя первая попытка приложения для Android. Я в этом странном месте, не зная, что искать, чтобы найти ответ на мой вопрос.Получить ссылку на объект в ListView

Что я достиг является:

  • создал пользовательский класс MyCustomClass со свойствами 'название' и 'youTubeUrl'
  • создал ArrayList <MyCustomClass>
  • Добавлены несколько элементов в ArrayList <myCustomClass>
  • Создал пользовательский ArrayAdapter и привязал его к архаисту.
  • Добавлен onItemClickListener в пользовательский ArrayAdapter.

Все это работает хорошо. Я хотел бы показать заголовок в ListView, а затем, когда пользователь нажмет элемент списка, я хотел бы получить ссылку на свойство youtubeUrl.

Вот что у меня есть для кода адаптера:

MyListAdapter myListAdapter = new MyListAdapter(this, R.layout.my_list, elements); 
myList.setAdapter(myListAdapter); 
myList.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String item = ((TextView)view).getText().toString(); 
     Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 
    } 
}); 
myListAdapter.notifyDataSetChanged(); 

Спасибо за вашу помощь.

+0

Показать исходный код myListAdapter.java –

ответ

1

Вы можете использовать position в onItemClick, чтобы вернуться к источнику данных и найти соответствующий объект. Оттуда вы сможете получить Url.

+0

Спасибо. Я смог получить youTubeUrl с помощью этого кода: 'String youTubeUrl = elements.get (position) .youtubeVideo; Toast.makeText (getBaseContext(), youTubeUrl, Toast.LENGTH_LONG) .show(); ' –

0

В качестве другого плаката подразумевается, это зависит от того, что вы используете в своем адаптере. Предполагая, что это MyCustomClass. Вы можете сделать что-то подобное в вашем onItemClick метод:

MyCustomClass selection = (MyCustomClass) getListView().getItemAtPosition(position); 
+0

Спасибо за это. Это может сделать код более читаемым в будущем. Правильно ли я полагаю, что код будет получать те же данные, что и этот: 'MyCustomClass selection = (MyCustomClass) elements.get (postion);' –

+0

Я так считаю. Одна нота - адаптеры часто являются динамическими вещами, поэтому я, вероятно, не буду ссылаться на элементы изнутри onItemClick(). Если элементы отмечены как окончательные, и вы точно знаете, что не будете менять модель адаптера, это не вызовет проблемы, но это все еще не очень хорошая идея. – Nick

 Смежные вопросы

  • Нет связанных вопросов^_^