Причина, по которой я спрашиваю об этом, заключается в том, что requery() устарел. Каков наилучший способ обновить ваш ListView?
Как обновить ListView в случае использования CursorAdapter?
Ответ 1
requery() обновляет a Cursor, а не CursorAdapter. Как вы говорите, он устарел, и его замена:
oldCursor = myCursorAdapter.swapCursor(newCursor); // hands you back oldCursor
или
myCursorAdapter.changeCursor(newCursor); // automatically closes old Cursor
myCursorAdapter.notifyDataSetChanged() уведомляет ListView о том, что набор данных изменился, и он должен обновить себя
Ответ 2
Используйте BaseAdapter.notifyDataSetChanged().
Ответ 3
Вы можете создать новый курсор и вызвать changeCursor() (документация здесь) на вашем экземпляре CursorAdapter или называть notifyDataSetChanged() (документация здесь) на вашем адаптере.
Ответ 4
Это то, что работает для меня, я не уверен, что это лучший способ.
c = db.rawQuery( "SELECT * FROM mytable", null); //same line of the first initialization
adapter.swapCursor(c);
Я обновляю единственный курсор, я не знаю, что делать с новым. Также я не знаю pepole, отвечаю только с именем функции.
Ответ 5
Единственное, что помогло мне, - это инициализировать новый курсор, похожий на предыдущий:
cursor = dbHelper.myDataBase.rawQuery(StaticValues.SQL_CAT, null);
newCursor = dbHelper.myDataBase.rawQuery(StaticValues.SQL_CAT, null);
а затем вызовите:
adapter.changeCursor(newCursor);
который обновил мой список.