Android Cursor RecyclerView 在滑动时轻弹

标签 android sqlite cursor swipe android-recyclerview

我想在我的回收站 View 中实现可滑动的项目。

我正在使用一个自定义回收器适配器,其中填充了一个加载器( Github link here )和一个用于滑动的自定义监听器( Github link here )。

数据使用 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);
}

我认为这个 flash 是由于动画比 swipeItem(position) 方法执行得更快,但我不太确定。

在这一点上,任何帮助都将非常感激,在此先感谢。

最佳答案

显然,我已经设法找到解决方案。
使用 Federico Ponzi 在 this question 中提供的 Wrapper .

在我的滑动监听器中,我调用了一个 AsyncTask 类,它直接在后台的光标上执行删除工作,然后是 onPostExecute我调用 getLoaderManager.restartLoader(...); .

同时,我设置了一个临时的 CursorWrapper 来显示我的新数据。
一旦 AsyncTask 完成他的工作,getLoaderManager 就会在我的主要 Activity 中被调用,而我的 recyclerView 会获得带有新数据的新适配器。

不确定它是否足够清楚,我的英语肯定没有帮助。

关于Android Cursor RecyclerView 在滑动时轻弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28928668/

相关文章:

android - 为什么 Facebook Android sdk 是一个项目?

android - 具有集成 Google Cloud Vision API 的应用程序因空对象引用而崩溃

java - SQLite数据库查询

python - 如何在python中为sqlite3转换二进制文件?

mysql - SQL_ATTR_ROW_NUMBER 的 SQLGetStmtAttr 输出值

python - 谷歌应用引擎分页和光标

performance - 这里可以避免使用 CURSOR 吗?

c# - 将我当前的光标位置显示为当前行和当前列?

android - 适用于 Android 和 iOS 的快速应用程序原型(prototype)制作工具

调试代码块完成时关闭Android应用程序