2013-03-06 4 views
2

Я хочу, чтобы отобразить данные в ListView (для лучшей производительности и утилизации), но каждая строку ListView будет иметь вертикальную LinearLayout, но не гарантирован, что сколько TextViews будут там в каждом LinearLayout ,ListView, имеющий динамические представления для каждой строки

В настоящее время я использую ViewHolder шаблон и я динамически добавлять вид на LinearLayout в getView() методы ListView. Примечание. Я вызываю linearLayout.removeAllViews() перед добавлением в него просмотров, чтобы устранить дублированные представления в LinearLayout.

Prolem Спектакль очень медленно из-за добавления удаления и добавления динамических представлений в ListView.

Любая другая идея, как я могу справиться с этой ситуацией? Предпочитаю ли я ScrollView и вертикальный LinearLayout вместо ListView?

Пожалуйста, помогите.

Сообщите мне, если с моей стороны требуется какое-либо уточнение.

+1

Рассмотрите возможность скрытия и отображения 'TextView' динамически в 'getView()', если вам нужно выбрать b/w некоторые уже известные значения. –

ответ

2

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

Если вы можете проанализировать свои данные и упростить его перед отправкой на адаптер, это может привести к некоторой нагрузке на метод getView() и поможет решить проблемы с производительностью.

EDIT: Как и M-WaJeEh, упомянутые выше элементы управления с Visibility.VISIBLE и Visibility.GONE обычно лучше работают в моем опыте, чем изменяют количество вещей, которые накачиваются.

+0

hmm Я разбираю данные JSON, и я формирую его как ArrayList и Beans. В getView() я только перебираю данные и создаю представление, это так. Вы хотите, чтобы я создавал представления перед созданием адаптера списка? –

+0

Право. Таким образом, у вас будет максимально возможное число или «TextViews» все раздуваются (надеюсь, это не очень большое число), но устанавливают видимость по умолчанию на «android: visibility =« gone ». Затем в вашем 'getView()' раздуйте все их и определите, какие из них будут показаны. Если ваше максимальное количество «TextView's» огромно, вам может понадобиться изучить «ExpandableListView» http://developer.android.com/reference/android/widget/ExpandableListView.html – Wenger

+0

Изменение видимости представлений в ListView не помогает. ListView все еще отстает, когда я пытаюсь прокрутить .. :( –

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