android - recyclerview如何在onswipe删除数据后如何恢复数据。
大家讲道理
大家讲道理 2017-04-17 16:37:59
[Android讨论组]
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
高洛峰

就这个需求来说不需要对数据频繁的读写,你的mList初始化数据是从数据表一次性读取的吧,可以建一个tempList暂存被删除的条目数据,对tempList进行删除的条目数据的管理(有删除操作时添加数据,action取消时移除前面删除时添加的对应的数据),在确定不再需要对列表进行编辑时(比如Activity退出时)再把tempList对应数据库进行数据持久化操作,tempList不为空时即遍历tempList,对应的数据库表数据条目进行删除,这时使用数据库事务操作会很快,tempList为空时不进行任何操作,整个过程,其实就最多只是进行了两次数据库操作(mList的查询读取和tempList的元素映射表项删除),节省了性能开支,至于“取消”的Action,要方便你从tempList查找对应的条目数据,tempList用Map创建会更合适一些(如Map<position, thingsModel>)。数据库表可以对单个条目进行删除修改操作,不需要删表再重建,那样代价太大,删除数据一般情况下毕竟是小范围的。

天蓬老师

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;
}
天蓬老师

参考数据库处理方法,用户删除并不是真正的删除,而是在一个字段中标志这个数据删除了。用户看不见,认为其被删除而已

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号