Android - обновление SimpleCursorAdapter - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть ListActivity, который получает свои данные из запроса к базе данных. У меня также есть специальный адаптер, который расширяет простой адаптер курсора.

Чтобы показать настроенный контент, я переопределил методы newView и bindView.

Каждый элемент представления имеет:

  1. TextView с заголовком
  2. ImageView содержит количество звезд - показанное изображение изменяется в зависимости от значения, полученного из базы данных
  3. Кнопка - текст кнопки изменяется при нажатии (Favorite / Make Favorite) и запускает событие обновления базы данных.

Моя проблема в следующем - когда я прокручиваю ListView, сделанные мной изменения, кажется, исчезают ... например, первый элемент помечается как избранный, а список прокручивается ... когда я возвращаюсь к первому элемент, текст возвращается к своему предыдущему значению, хотя внутренне БД была обновлена.

Я прочитал, что notifyDatasetChanged() не подходит для этого случая, так как адаптер должен быть уведомлен об изменениях базы данных. Я пытаюсь использовать метод reQuery(), но не знаю, где его разместить.

Должен ли я поместить reQuery() в метод onClick кнопки? Если нет, где его разместить?

Ответы [ 3 ]

0 голосов
/ 04 февраля 2011

Используйте SetListAdapter с ArrayAdapter для отображения списка.Используйте ConvertView, чтобы избежать надувания View.

if (convertView==null)
{
     //inflate your list
}
0 голосов
/ 04 февраля 2011

Какой бы адаптер вы ни использовали, у него должен быть метод getView. Всякий раз, когда прокручивается список, этот метод getView вызывается для всех элементов listItem в представлении. Убедитесь в методе getView. Что представление генерируется динамически.


Должно быть проверено наличие щелчка или изменение значения.


для обновления списка без прокрутки необходимо вызвать listView.getAdapter (). NotifyDataSetChanged ()

Проверьте следующую ссылку. здесь я упомянул полный код для правильного использования списка. Используя это, мы можем добиться любого поведения списка. Мы также можем вставлять анимацию.

Изменение фона ListView - странное поведение

Надеюсь, эта помощь:)

0 голосов
/ 04 февраля 2011

Если вы расширили BaseAdapter, после изменения данных вызовите listView.setAdapter () и в getView () тоже обновите данные представления.

...