2013-12-18 2 views
0

В моем макете основного действия (RelativeLayout) я отображаю три списка вертикальной ориентации среди других кнопок и текстовых просмотров. Моя проблема заключается в том, что когда один из списков (тот, что находится в левой части экрана) обновляется, другие два обновления также приводят к плохой производительности пользовательского интерфейса.Обновление списка просмотра Android слишком много раз

Я понимаю, что RelativeLayout может быть сложным в случаях, когда размер одного вида влияет на позиционирование другого (заставляя другого перерисовывать), поэтому я убедился, что позиционирование двух списков не связано с left listview.

Я также проверил советы о том, как сделать перерисовку списков более эффективной, используя ViewHolders и т. Д., Но я бы лучше решил эту проблему в ее ядре.

Подробнее:

  • Для адаптера левого ListView, я подкласс класса ArrayAdapter.
  • Для двух других адаптеров listviews я использую подкласс класса CursorAdapter.

ответ

0

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

1

Если вы установили android:layout_height="wrap_content" в свой ListView, система попытается найти лучший размер каждого элемента и вызвать getView много раз. Там нет никакого способа вокруг, что кроме использования android:layout_height="fill_parent"

http://www.androiddevelopersolutions.com/2013/07/android-listview-adapter-getview-called.html custom listview adapter getView method being called multiple times, and in no coherent order

+0

Я уже проверил это. Даже фиксированная высота и вес макета не будут выполняться. – Vaggouras

1

Вы правильно RelativeLayout в виновнике, использовать какой-то другой вид в Plase его, как LinearLayout с андроидами: weightSum и т.д ...

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