Обновление Android ListView с помощью SimpleCursorAdapter
Эй, я использую список для демонстрации записей, которые хранятся в базе данных. У меня также есть элемент EditText и кнопка, которая добавляет содержимое EditText в базу данных. Чтобы связать представление с содержимым базы данных, я использую SimpleCursorAdapter и следующую функцию заполнения:
private void populate() {
cursor = dbAdapter.getAllItems();
startManagingCursor(cursor);
String[] from = new String[] { DBAdapter.KEY_TASK };
int[] to = new int[] { android.R.id.text1 };
// Now create an array adapter and set it to display using our row
cursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to);
list.setAdapter(cursorAdapter);
}
Если я добавил новую запись, нажав на кнопку, я хочу обновить список, но это работает только с функцией заполнения, а не с общей функцией адаптера. notifyDataSetChanged();
, У меня есть ошибка или это правильный способ обновления списка?
3 ответа
Вы видели это, пробовали метод курсора подкачки или просто снова вызывали setAdapter()?
У меня была похожая проблема, когда я не мог обновить свой список, и я просто создал метод refreshListView(). Теперь вы можете вызывать это изначально из onCreate() И каждый раз, когда пользователь добавляет что-то в БД. Все, что он делает, это повторно привязывает просмотр списка к курсору. Со всеми устаревшими методами (query ()) и проблемами с notifyDataSetChanged () я решил, что это самый простой способ.
Пожалуйста, обратитесь по этой ссылке... это работает как шарм
Обновите SimpleCursorAdapter, сохраняя положение прокрутки в ListView
для динамического просмотра списка при прокрутке я добавил новый элемент из базы данных... я допустил ошибку здесь.. я назначал новый адаптер для каждого времени для одного и того же простого курсорадаптера. Вместо создания нового адаптера. просто используйте
adapter.changecursor(newcursorValue);
adapter.notifydatasetChanged();
lsMedicine1.setSelectionFromTop(lsMedicine1.getLastVisiblePosition()-20, 0);
Вам нужно позвонить swapcursor()
до notifyDataSetChanged()
на адаптере.