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 получит новый адаптер с новыми данными.

Не уверен, что достаточно ясно, мой английский не поможет точно.

Другие вопросы по тегам