В моем проекте используется SQLiteCursorLoader library from commonsguy для загрузки данных из базы данных в ListView. Среди этих данных - простое логическое (поскольку SQLite поддерживает булевы ... то есть число, которое только когда-либо равно 0 или 1), которое указывает состояние флажка. Если я изменяю состояние флажка в списке и затем прокручиваю элемент из списка, элемент списка возвращается к состоянию, которое он имеет при передаче курсора, несмотря на то, что базовая база данных изменилась. Если я изменю состояние кучки флажков, а затем активирует список MultiChoiceMode
, все отображаемые элементы вернутся к состоянию, в котором они находились, когда первоначально был перенесен курсор, несмотря на то, что базовая база данных изменилась.Обновление курсора из SQLiteCursorLoader
Есть ли способ обновить курсор? Cursor.requery()
устарел, и я не хочу создавать новый Cursor
каждый раз, когда установлен флажок, что случается очень много. Я также не уверен в том, что вызов restartLoader()
несколько раз будет работать, по производительности, тем более, что я использую onLoadFinish()
для выполнения некоторых анимаций.
Хотя я признаю, что это хороший совет в целом, это совет, который не помогает мне в моих конкретных обстоятельствах. Мое приложение предназначено для банковской книги, и оно использует реляционную базу данных для отслеживания всех важных данных, в том числе, если пользователь проверил элемент, чтобы отметить транзакцию как опубликованную. В представлении списка есть атрибут 'android: choiceMode =" multipleChoiceModal ", поэтому пользователь может активировать« ActionMode », чтобы удалить сразу несколько элементов из базы данных. Вы можете просмотреть источник здесь, если хотите: https://bitbucket.org/MowDownJoe/vault-foss – MowDownJoe
@MowDownJoe: «это не помогает мне в моих конкретных обстоятельствах» - тогда вам нужно будет изменить свое обстоятельство. Вам нужно либо запросить курсор, либо остановить использование CursorAdapter, нравится вам это или нет. – CommonsWare