我想在循环器视图中实现可滑动的项目。
我使用填充了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(位置)方法快,但我并不确定。
此时,非常感谢任何帮助,提前谢谢。
答案 0 :(得分:0)
显然,我已经设法找到了解决方法。 使用Federico Ponzi在this question提供的包装器。
在我的滑动侦听器中,我调用一个AsyncTask类,它在后台直接执行删除工作,然后onPostExecute
我调用getLoaderManager.restartLoader(...);
。
与此同时,我设置了一个临时的CursorWrapper来显示我的新数据。 一旦AsyncTask完成他的工作,getLoaderManager就会在我的主活动中被调用,而我的recyclerView会获得带有新数据的新适配器。
不确定它是否足够清楚,我的英语肯定无济于事。