首頁  >  問答  >  主體

android - recyclerview如何在onswipe删除数据后如何恢复数据。

大家讲道理大家讲道理2721 天前441

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-17 16:39:59

    就這個需求來說不需要對數據頻繁的讀寫,你的mList初始化數據是從數據表一次性讀取的吧,可以建一個tempList暫存被刪除的條目數據,對tempList進行刪除的條目數據的管理(有刪除操作時添加數據,action取消時移除前面刪除時添加的對應的數據),在確定不再需要對列表進行編輯時(比如Activity退出時)再把tempList對應數據庫進行數據持久化操作,tempList不為空時即遍歷tempList,對應的資料庫表資料條目進行刪除,這時使用資料庫事務操作會很快,tempList為空時不進行任何操作,整個過程,其實最多只是進行了兩次資料庫操作(mList的查詢讀取和tempList的元素映射表項刪除),節省了性能開支,至於「取消」的Action,要方便你從tempList查找對應的條目數據,tempList用Map創建會更合適一些(如Map)。資料庫表可以對單一項目進行刪除修改操作,不需要刪表再重建,那樣代價太大,刪除資料一般情況下畢竟是小範圍的。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 16:39:59

    UI上的刪除不做實體刪除,恢復的時候,直接插入原來的位置即可。

    用一個列表存剛才做的那些操作

    
    // 存在list 中
    List<Action> actions = new ArrayList<>();
    
    // 每做一步操作放一个,这样就可以一步一步的回退了。
    // 删除不要做物理操作
    
    
    // 操作的数据结构如下
    class Action{
    
        public final static int REMOVE = 0x2;
        public final static int INSERT = 0x2;
        public final static int UPDATE = 0x2;
    
        private int actionMod;
        private int id;
        private String table;
    }

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 16:39:59

    參考資料庫處理方法,使用者刪除並不是真正的刪除,而是在一個欄位中標誌這個資料刪除了。使用者看不見,認為其被刪除而已

    回覆
    0
  • 取消回覆