В зависимости от специфики вашей реализации, я бы выбрал один из следующих подходов.
Вариант А.
Используйте setOnItemClickListener
для регистрации прослушивателя щелчков в списке (или, если вы используете ListActivity или ListFragment, просто используйте [onListItemClick
] (http://developer.android.com/reference/android/app/ListActivity.html#onListItemClick%28android.widget.ListView, android.view.View, int, long% 29)). onItemClick
передается в представлении, по которому был выполнен щелчок, и может использоваться для извлечения вложенных представлений, например, TextView, который вы ищете.
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv = (TextView) view.findViewById(R.id.textview);
String tvText = tv.getText();
}
}
Вариант B
Предполагая, что вы заполняете свой список из какой-то коллекции данных, вы можете сделать что-то похожее на описанное выше, но используйте переданный параметр position
в качестве индекса, чтобы напрямую получить текст из объектов в вашей коллекции; i.e.:
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
SomeObject so = myCollection.get(position);
String tvText = so.getTextViewText();
}
}
Хотя есть еще много вариантов. Мне нравится создавать свое собственное расширение ArrayAdapter для хранения моделей для представлений элементов в списке. Таким образом, вы также можете вызвать getItemAtPosition(int position)
или getItem(int position)
и привести возвращаемый объект к вашему типу данных.