首页 文章

使用CursorRecyclerAdatper在RecyclerView中删除和撤消

提问于
浏览
0

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

当用户单击Viewholder布局中的删除按钮时,它将从回收器视图中删除,但在快餐栏超时之前尚未从数据库中删除 .

此按钮侦听器位于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 . Confirmation and undo removing in RecyclerView

如何在从数据库中实际删除之前暂时从光标中删除?

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

1 回答

  • 0

    不影响数据库,需要更改为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);}
    

相关问题