Подтвердить что ты не робот

Более быстрая загрузка ListView, быстрее, чем метод Viewholder

При раздувании представлений для listView лучше ли иметь все текстовые элементы без андроида: текст в файле .xml и сколько это влияет на скорость? Что относительно ViewStubs, было бы еще быстрее?

При раздувании LinearLayout с 8 текстовыми элементами без андроида: текст и с android: text = "@string/abc", это что-то меняет? обратите внимание, что я повторно использую виды, поэтому, возможно, только 10 раздуваются, а затем повторно используются, я не знаю.

Я развиваюсь на ZTE Blade, так что это единственный процессор 600 МГц, а не четырехъядерный ядро ​​...

4b9b3361

Ответ 1

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

Надуйте макет в фоновом потоке.

View getView(int position, View convertView, ...) {
    View v;
    if (convertView == null) {
        Start a background thread to inflate your linearLayout. 
        Pass item data and view 'v' to it.

        v = inflate a simple dummy textview;
        return v;
    }
    set normal stuff to convertview here.
    return convertView ;
 }

В фоновом потоке

  • Наполните свой Linearlayout в 'v'
  • Задайте все данные.
  • Затем аннулируем представление v.

    v.postInvalidate();
    

Ответ 2

Это очень полезно при ускорении просмотров списка, особенно бит "Просмотр владельца": http://developer.android.com/training/improving-layouts/smooth-scrolling.html

У меня также есть ZTE Blade, они медленные, но приложения, которые хорошо работают на нем, отлично работают на обычных телефонах:)

Ответ 3

Если вы все равно заменяете текст в текстовом виде, вам не следует беспокоиться о том, чтобы заполнить их в XML.

Настоящим убийцей для производительности, который заманчиво делать в простых списках, является вложенное linearlayouts. С небольшим количеством работы любое дерево linearlayout может быть заменено на relativelayout.

Убедитесь, что вы не используете findViewById вне if (convertView == null) {блокируйте либо с помощью стиля ViewHolder, либо просто устанавливая в view.setTag(R.id.resId, findViewById (R.id.resID) )

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