2009-11-10 4 views
1

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

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

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

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

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

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

ответ

1

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

Try:

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

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

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

+0

0 проверка голосов Я не хочу хранить два набора данных. На самом деле только один набор данных имеет только два разных состояния. Итак, любые другие идеи –