Обновление ListView с часто меняющимися данными в Android - PullRequest
1 голос
/ 18 апреля 2011

Вопрос, опубликованный в этой ветке , спрашивает, как обновить ListView при изменении данных.Однако предполагается, что данные, измененные в ListView, хранятся в базе данных.Поэтому пользовательский интерфейс ListView можно обновить, просто вызвав Requery () после того, как изменения были зафиксированы в базе данных.

Что делать, если измененные данные ListView не хранятсябаза данных?

Например, если каждый элемент в ListView показывает расстояние до определенного ориентира на основе текущих GPS-координат пользователя, каков правильный способ обновления вида с обновленными расстояниями по мере перемещения пользователя?Должны ли расстояния просто храниться в базе данных для удобства, чтобы требуемый () обновлял пользовательский интерфейс?Это не похоже на правильный подход, если нет необходимости сохранять (часто меняющиеся) данные GPS.

Редактировать: Чтобы уточнить, я бы специально хотел рассмотреть ситуацию, когда некоторые данные хранятся вбаза данных (например, координаты ориентиров), однако часто меняющиеся данные вычисляются на лету (например, расстояния).

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Я предлагаю использовать ArrayAdapter вместо CursorAdapter (который используется для заполнения ListView на основе курсора> запроса к базе данных)

ArrayAdapter

Вы должны обновить данные массива, хранящие ваши координаты. Когда он изменится, вызовите adapter.notifyDataSetChanged(), чтобы ваш список обновился с использованием последних данных массива

Надеюсь, это поможет

1 голос
/ 18 апреля 2011

ArrayAdapter можно использовать вместо CursorAdapter.

Метод notifyDataSetChanged () можно использовать, чтобы указать ListView обновить себя, запросив назначенный ему ArrayAdapter.

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