Несколько адаптеров ListAdapter или один, используя фильтрацию ( Производительность Android)

Попытайтесь сосредоточиться на общих «что можно и чего нельзя» в отношении списков, например является добавление и удаление 30 элементов из списка 200 лучше, чем очистка и заселение? Или любые другие советы в этой области - я действительно не могу попробовать на моем телефоне, чтобы быстро для этого: -)

Есть ли способ вычислить накладные расходы памяти / вычислительную мощность операций со списком. Фон выглядит следующим образом:

У меня есть представление списка на странице, например, на странице 3 вкладки внизу (Все, Поиск, Недавние). Теперь, если вы щелкнете вкладку, список должен показать вам нужные элементы.

Сейчас есть два разных подхода, один из них:

Используйте один ListAdapter, отфильтруйте элементы соответственно
- Если вы нажмете «Все», просто поместите в него все элементы из БД
- Если вы нажмете кнопку «Недавние», просто поместите элементы, соответствующие требованиям

Используйте два (три ..) ListAdapter , по одному для каждой категории
- Если вы нажмете «Все», установите для адаптера () списка соответствующий
- Если вы нажмете «Недавние», установите для параметра «Адаптер» () соответствующий

. Речь идет о списке из 200 элементов, которые представляют собой сложные объекты, созданные из базы данных. Когда, например, при поиске элемента вы вводите часть заголовка, и в списке должны отображаться только соответствующие элементы. Элементы не будут воссозданы, я бы запросил только идентификаторы и использовал буферизованные элементы (см. Позже структуру данных).

Я также не уверен в том, «где фильтровать», я мог бы сделать это в базе данных (выберите, где заголовок LIKE abc), а затем ЛИБО:

  • удалить несоответствующие элементы из списка и добавить все совпадающие (но не включенные) элементы
  • очистить весь список, добавить все совпадающие элементы

Опять же, чтобы прояснить структуру данных приложения:

  • База данных с необработанными простыми записями (с идентификаторами + заголовок + ...)
  • HashSet со сложными записями, созданными один раз из БД, только для чтения + всегда все записи
  • ArrayList текущих записей, показанных в listView

Я надеюсь, что вы уловили мой дрейф, я пытаюсь почувствовать «дорогие» операции.Возможно, в качестве последнего побуждения к ответу я запишу несколько случаев, и вы сможете высказать свое мнение о том, насколько они дороги:

  1. Выбор N элементов (только ID) из БД с заголовком LIKE
  2. Итерация список из 200 элементов с «title.contains ()» и использование только совпадений
  3. Удаление 100 элементов из массива, ПОКАЗАНО в виде списка
  4. Удаление 100 элементов из массива, не показанного, затем подключение и отображение

Спасибо за любые отзывы или советы по недопустимым действиям. Особенно возможные проблемы с триггером событий при работе с видимыми элементами списка вместо того, чтобы делать это сначала «в фоновом режиме», а затем устанавливать новый ListAdapter

5
задан BЈовић 9 December 2011 в 22:06
поделиться