Я бы взял ярлык, у вас ListView
заполняется Adapter
, который использует набор данных.Этот набор данных может быть практически любой структурой данных, такой как Array, ArrayList и т. Д.
Определяемый вами макет, например custom_row
, в вашем случае определяет только структуру вашего представления, т. Е. Элементы "где" будут отображаться впункт в списке.
С другой стороны, вы все еще обязаны сказать ListView
"что" показать в textView1
и textView2
.Это делается с помощью Adapter
, который соединяет ListView
с набором данных.Чаще всего ListView
является отображением набора данных «один-к-одному», т.е. первый элемент в списке - это первый элемент в вашем наборе данных (я не знаю, что вы используете только для двух элементов, возможно,быть массивом).
ListView
вызывает getCount()
на Adapter
, чтобы узнать, сколько всего будет просмотров.Затем он вызывает getView()
для каждого вида, который будет отображаться на экране.Именно в этом методе вы определяете, что на самом деле будет отображаться в одном представлении в списке (ваш custom_row).
Теперь вы знаете, какая запись набора данных должна заполнять какое представление в ListView
так что вы можете просто прочитать это там.Например, если ваш getView()
:
textView2.setText(getItem(position).getSomeTextField());
И исходный набор данных представляет собой ArrayList с именем listDataSet
Вы можете просто сделать listDataSet.get(2).getSomeTextField()
ПРИМЕЧАНИЕ: Вам придется управлять областью действия набора данных, чтобы он был виден из любого места, куда вы звоните.