Android 使用CursorRecyclerAdatper在RecyclerView中移除和撤消

Android 使用CursorRecyclerAdatper在RecyclerView中移除和撤消,android,android-recyclerview,Android,Android Recyclerview,我的recyclerview适配器加载了从本地数据库查询数据的游标 当用户单击Viewholder布局中的delete按钮时,它将从recycler视图中删除,但在snackbar超时之前还不会从数据库中删除 此按钮侦听器位于CustomRecyclerAdapter中 Button deleteButton = (Button) view.findViewById(R.id.delete_button); deleteButton.setOnClickListener(new View.OnC

我的recyclerview适配器加载了从本地数据库查询数据的游标

当用户单击Viewholder布局中的delete按钮时,它将从recycler视图中删除,但在snackbar超时之前还不会从数据库中删除

此按钮侦听器位于CustomRecyclerAdapter中

Button deleteButton = (Button) view.findViewById(R.id.delete_button);
deleteButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        notifyItemRemoved(viewHolder.getAdapterPosition());
    }
});
如何临时从光标中删除,然后重新添加?当前,在删除动画后,调用onBindViewHolder,数据将再次备份,因为它位于光标中

我查看这篇文章。但这是arraylist。

如何在光标实际从数据库中删除之前将其临时删除


或者我只能向数据库列添加删除标志并重新查询?超时后,从数据库中删除。如果撤消,则清除此标志并重新查询

不影响数据库,并且需要更改为arraylist。我使用来查询不属于删除id列表的项目。它解决了我的要求

int argCount = deleteRowsId.size();
if (argCount > 0) {
    String[] selectionArgs = deleteRowsId.toArray(new String[0]);
    StringBuilder inList = new StringBuilder(argCount * 2);
    for (int i = 0; i < argCount; i++) {
         if (i > 0) {
             inList.append(",");
         }
             inList.append("?");
    }

    String selection = Contacts._ID + " NOT IN (" + inList.toString() + ")";

    return new CursorLoader(this.getContext(), baseUri, CONTACTS_SUMMARY_PROJECTION, selection, selectionArgs, limit);}
int argCount=deleteRowsId.size();
如果(argCount>0){
String[]selectionArgs=deleteRowsId.toArray(新字符串[0]);
StringBuilder inList=新的StringBuilder(argCount*2);
对于(int i=0;i0){
inList.append(“,”);
}
inList.append(“?”);
}
字符串选择=联系人。_ID+“不在(“+inList.toString()+”)”;
返回新的游标装入器(this.getContext(),baseUri,CONTACTS_SUMMARY_PROJECTION,selection,selectionArgs,limit);}