Android Cursor RecyclerView轻扫一下

时间:2015-03-08 16:09:52

标签: android sqlite cursor swipe android-recyclerview

我想在循环器视图中实现可滑动的项目。

我使用填充了Loader(Github link here)的自定义回收器适配器和用于滑动的自定义侦听器(Github link here)。

数据使用SQLite本地存储,并通过调用已过滤的Cursor进行检索。

我认为我在实施方面做错了,因为当我尝试刷卡时会发生的事情是我的回收物品变得像闪现一样#34;很短的时间然后消失。

除了这种奇怪的行为外,一切都很好。

这是我从数据库中删除项目的方法:

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(位置)方法快,但我并不确定。

此时,非常感谢任何帮助,提前谢谢。

1 个答案:

答案 0 :(得分:0)

显然,我已经设法找到了解决方法。 使用Federico Ponzi在this question提供的包装器。

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

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

不确定它是否足够清楚,我的英语肯定无济于事。