Адаптер Android несколько getView

я читал о проблеме getView, названного многократно и все ответы. Однако я не нахожу решение для своей проблемы.

У меня есть список, где строки имеют два состояния: читайте или нет. Ну, я хочу к объектам, видевшим, первый раз имеет другой цвет и когда я прокручиваю список, они изменяют свой цвет на "состояние чтения".

Чтобы сделать это в методе getView моего адаптера, я установил поле isRead, когда строка для того объекта красится. Но проблема следующая: начиная с метода getView называют многократно, поле отмечено как чтение и когда список показывают на экране, появляется, как будто это было уже считано.

Какая-либо идея решить эту проблему?

Спасибо

8
задан xger86x 7 July 2010 в 15:23
поделиться

2 ответа

Я предполагаю, что вы имеете в виду проблему, когда getView запрашивает одно и то же представление несколько раз.

ListView делает это, потому что ему нужно получить измерения для представлений по разным причинам (размер полосы прокрутки, расположение и т.д.)

Этой проблемы обычно можно избежать, не используя свойство "wrap_content" в вашем listview.

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

Старайтесь избегать любых отношений между представлением и данными, кроме концепции представления как отображения этих данных.

Вместо этого, пусть какой-нибудь рабочий поток или слушатель событий в вашем listactivity следит за тем, какие элементы списка были показаны пользователю, обновляет данные и вызывает dataSetChanged на вашем адаптере.

14
ответ дан 5 December 2019 в 11:22
поделиться

Не так, как вы хотите, чтобы это работало. Причина, по которой getView () вызывается несколько раз, состоит в том, чтобы позволить ОС измерить строки, чтобы она знала, как их расположить. Вам нужно будет, чтобы он отмечался как прочитанный, когда они щелкают по нему или устанавливают флажок или что-то в этом роде.

0
ответ дан 5 December 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: