2017-07-25 64 views
0

我的recyclerview适配器加载了从本地数据库查询数据的游标。使用CursorRecyclerAdatper删除和撤消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

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

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

回答

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);}