доступ к элементу в списке - PullRequest
0 голосов
/ 08 ноября 2011

enter image description here

У меня есть список игроков, имена которых отображаются в виде списка. и каждая строка списка содержит кнопку, текстовое представление и изображение. Как я могу получить значение textview?

Ответы [ 4 ]

0 голосов
/ 08 ноября 2011

В зависимости от специфики вашей реализации, я бы выбрал один из следующих подходов.

Вариант А. Используйте 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) и привести возвращаемый объект к вашему типу данных.

0 голосов
/ 08 ноября 2011

Это статический список или динамически генерируемый?
Если он статический, вы можете назначить разные идентификаторы каждому текстовому представлению в самом xml, а затем использовать FindViewById для доступа к нему.
Если это не то, что вам нужно сделать: у вас, очевидно, будет один ряд, и он будет отображаться много раз. Таким образом, несколько текстовых просмотров будут иметь одинаковый идентификатор.
Используйте цикл for, внутри которого используйте FindViewById (Помните, что FindViewByID будет обращаться только к первому элементу с упомянутым Id, установите его Id на что-то другое, на следующей итерации будет выбран следующий текстовый вид, установите его Id на что-то), затем используйте эти новые идентификаторы для доступа к ним, таким образом, вы можете получить доступ к каждому текстовому просмотру

0 голосов
/ 08 ноября 2011

Если вы используете класс Custom Adapter для заполнения списка, то в вашем адаптере вы можете использовать HashMap для сохранения пары ключ-значение, сохраняя позицию элемента списка с данными в этом textview.и затем вы можете легко получить его наOnItemClickListener списка просмотра.

0 голосов
/ 08 ноября 2011

Я не уверен, что вы подразумеваете под своим вопросом. Вы хотите получить значение, которое находится внутри textview? Или просмотр текста в определенной позиции. Чтобы получить значение textview, используйте textview.getText (). Чтобы установить значение, используйте textview.setText ().

Вы можете обратиться к this , чтобы получить данные в любой заданной позиции внутри списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...