Android Cursor RecyclerView делает пролистывание
Я хочу реализовать смахиваемые элементы в моем представлении переработчика.
Я использую пользовательский адаптер для утилизации, в который входит Loader ( ссылка на Github здесь) и пользовательский прослушиватель для считывания ( ссылка Github здесь).
Данные хранятся локально с помощью SQLite и извлекаются с помощью вызова отфильтрованного курсора.
Я думаю, что я делаю что-то не так с реализациями, потому что, когда я пытаюсь провести пальцем по экрану, происходит то, что мой предмет рециркуляции очень быстро мигает, а затем исчезает.
Все работает отлично, за исключением этого странного поведения.
Это мой метод удаления элемента из базы данных:
public void swipeItem(int position) {
mDatabase.open();
String cursor_string = recyclerFilter.getText().toString();
final Cursor filterCursor = mDatabase.fetchVisible(cursor_string);
filterCursor.moveToPosition(position);
int pID = filterCursor.getColumnIndex("_id");
final String iD = filterCursor.getString(pID);
mDatabase.deleteItem(iD);
getLoaderManager().restartLoader(MAIN_LOADER_ID, null, mCallbacks);
}
Я думаю, что эта вспышка связана с тем, что анимация выполняется быстрее, чем метод swipeItem (position), но я не совсем уверен в этом.
На данный момент, любая помощь будет очень признателен, спасибо заранее.
1 ответ
Видимо, мне удалось найти решение этой проблемы. Использование Обертки, предоставленной Федерико Понци в этом вопросе.
В моем прослушивателе смахивания я вызываю класс AsyncTask, который выполняет удаление непосредственно над курсором в фоновом режиме, затем onPostExecute
Я звоню getLoaderManager.restartLoader(...);
,
Тем временем я установил временный CursorWrapper, чтобы показать мои новые данные. Как только AsyncTask закончит свою работу, getLoaderManager будет вызываться в моей основной деятельности, а мой recyclerView получит новый адаптер с новыми данными.
Не уверен, что достаточно ясно, мой английский не поможет точно.