2

Перед тем, как начать полномасштабный проект таблицы БД, который показан в списке, я хотел бы лучше понять, что происходит с пользовательским интерфейсом при изменении данных БД.Android - Как изменить курсор в CursorAdapter влияет на интерфейс?

Представьте, что вы видите список из 1000 элементов с помощью адаптера курсора. Теперь некоторые строки добавляются/удаляются в/из списка. Теперь новый курсор необходимо загрузить в адаптер курсора (используя changeCursor).

Что происходит со списком (ListView), отображаемым для пользователя? Видит ли пользователь эту перезагрузку? Остается ли список в одном месте?

ответ

4

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

После того, как курсор заменен, адаптер остается в предыдущем положении.

Если новый курсор имеет меньше доступных предметов (таким образом, меньше позиций), последний видимый элемент будет последним элементом в курсоре.

В основном список не будет перемещаться визуально до тех пор, пока элементы до последнего видимого элемента не изменятся.


Что касается технических вещей:

Прежде всего changeCursor действует так же, как swapCursor единственное различие состоит в том, что changeCursor также закрывает предыдущий курсор.

Вызывается swapCursor, а новый курсор не равен нулю, вызывается notifyDataSetChanged.

Если у вас было достаточно convertViews (многоразовых просмотров), созданных до обмена, то на видимые виды вызывается bindView, чтобы изменить текст/изображения или привязать их к вашим представлениям. Это изменение очевидно для пользователя.

Если, однако, у вас недостаточно просмотров, тогда вызывается newView, а виды создаются перед вызовом bindView, как указано выше. Опять же, это будет видно пользователю, потому что новые элементы добавляются в список.

+0

Как кто-то, кто использует в списках памяти с помощью ListAdapter, я понимаю из вашего ответа, что нет никакой разницы между изменением курсора и изменением списка. Благодарю. –

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

  • Нет связанных вопросов^_^