2017-07-25 58 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);}