美文网首页Android开发经验谈Android开发Android技术知识
Android - RecyclerView系列之添加删除数据的

Android - RecyclerView系列之添加删除数据的

作者: Allens_Jiang | 来源:发表于2018-01-04 17:17 被阅读4965次
    老婆保佑,代码无BUG

    目录

    • 一:如何实现添加删除数据
    • 二: 解决方案(从下标0位置开始添加)
    • 三:添加数据后,下表错位问题

    一:如何实现添加删除数据

    在之前的系列文章中,我有一个图片,如下,可以看到,我可以添加数据,先说说如何实现的,再说说坑在哪

    插入删除的动画效果

    1. 在适配器中添加

    mData 是我的数据源,当我添加数据的时候,调用 addData,传入我想添加数据的位置即可,删除同样的有原理,第一个坑,就是 注意看 我是使用
    notifyItemInserted刷新数据的

    public void addData(int position) {
            mData.add(position, "Insert One");
            notifyItemInserted(position);
    }
    
    
    public void removeData(int position) {
            mData.remove(position);
            notifyItemRemoved(position);
    }
    

    2. 代码实现

    然后代码如下,就可以和上面的效果图一样了,

    myAdapter.removeData(1);
    myAdapter.addData(1);
    

    这时候就有小伙伴说了,直接将1改成0 不就好了么,那我改成一,然后你瞅瞅

    将1改成0

    坑!!!

    不知道,小伙伴们发现没,删除一切正常,但是,添加的时候,RecyclerView,并没有看到动画效果,下拉一点,可以看到,数据确实添加了,就是没有将添加在0 位置的数据显示出来

    二: 解决方案

    当你添加完数据,刷新以后

    myAdapter.addData(0);
    mRecyclerView.scrollToPosition(0);
    

    先看看效果,

    修改以后的效果图

    完美解觉,那刚刚哪行代码什么意思呢,我英文不好,就不放源码上的解释了,大概的意思,把列表移动到顶端0 的位置


    三:添加数据后,下表错位问题

    当我们点击之前写的单项点击事件

    问题又来了

    注意看,我添加了两个新的数据,下表应该是 0 ,1, 2, 3.。。这样才对
    但是变成了 0,0,0,1,我们添加的两条数据,明显不对嘛

    添加数据没问题了,为什么了单项点击有问题了

    看一眼我们之前添加数据的逻辑

    public void addData(int position) {
            mData.add(position, "Insert One");
            notifyItemInserted(position);
    }
    

    我们当时使用的是notifyItemInserted,为了能看到我们的动画效果睦南道不是这个??

    查阅了资料,发现,确实有问题

    解决方案

    正确打开方式

    //添加数据  
    public void addItem(int position, Object data) {  
        mDatas.add(position, data);  
        notifyItemInserted(position);//通知演示插入动画  
        notifyItemRangeChanged(position,mDatas.size()-position);//通知数据与界面重新绑定  
    }
    

    使用notifyItemRangeChanged 从新让数据与界面绑定,瞅瞅效果

    完美解决

    补充

    notifyDataSetChanged();//通知重新绑定所有数据与界面  
    notifyItemChanged(int);//通知重新绑定某一个Item的数据与界面  
    notifyItemRangeChanged(int, int);//通知重新绑定某一范围内的的数据与界面 
    

    感谢

    RecyclerView关于添加/删除Item的那些坑~~~

    相关文章

      网友评论

        本文标题:Android - RecyclerView系列之添加删除数据的

        本文链接:https://www.haomeiwen.com/subject/wanrnxtx.html