【问题标题】:remove and undo in RecyclerView with CursorRecyclerAdatper使用 CursorRecyclerAdatper 在 RecyclerView 中删除和撤消
【发布时间】:2017-07-25 07:27:14
【问题描述】:

我的 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,由于在游标中,数据再次被备份。

我检查了这篇文章。但这是数组列表。 Confirmation and undo removing in RecyclerView

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

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

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多