реализация адаптера listview - PullRequest
1 голос
/ 10 ноября 2009

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

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

Итак, проблема заключается в том, как выполнить это поведение с помощью ListView и ListAdapter.

Пока у меня есть решение для каждого сценария, но нет для двух вместе.

  • Сценарий первый - используйте AsyncTask и ArrayAdapter. В doInBackGround периодически запрашивайте базу данных и передайте результат в onProgressUpdate, а затем просто заполните ArrayAdapter новыми добавленными значениями. Но когда наступил второй сценарий, я запросил всю таблицу, а затем скопировал все значения в ArrayAdapter за один шаг, что довольно медленно.
  • Сценарий два - снова запросите базу данных, просто используйте CursorAdapter. Но в этом случае я не могу обновить ListView динамически с помощью CursorAdapter.

Итак, есть идеи, как реализовать это с помощью одного адаптера, или я просто должен использовать ArrayAdapter и CursorAdapter в зависимости от случая?

1 Ответ

1 голос
/ 11 ноября 2009

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

Попытка:

Сценарий 1a: Тот, кто получает данные, не только помещает их в базу данных, но и сообщает операции «Вот некоторые новые данные для отображения».

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

Теперь, если дело в том, что у вас есть и данные в базе данных и поступающие новые данные, вам нужно будет сшить эти наборы данных вместе. Вы можете использовать мой MergeAdapter для этого: дать ему два ListAdapters, один, представляющий ваши существующие данные (возможно, CursorAdapter), и один, представляющий новые данные (возможно, ArrayAdapter). Он будет отображать их как объединенную сущность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...