ListView Adapter.notifi不管用

简介: 前言,在使用到adapter的时候,一般要用List来装数据实体,这里两种不同的写法容易遇到不同的问题。第一种写法class TestAdapter{ private List list; *** public TestAdapter(List list){ this.

前言,在使用到adapter的时候,一般要用List来装数据实体,这里两种不同的写法容易遇到不同的问题。

  • 第一种写法
class TestAdapter{
    private List<Node> list;
    ***

    public TestAdapter(List list){
        this.list = list;
        ***
    }
}

这样的话,我们在list更新的时候直接调用adapter的notifydatasetchanged就可以了.

  • 第二种写法
class TestAdapter{
    private List<Node> mList = new ArrayList<Node>();
    ***

    public TestAdapter(List list){
        mList.addAll(list);
        ***
    }

    public void addAll(List list){
        mList.clear();
        mList.addAll(list);
        notifydatasetchanged();
    }

 public void addOne(Node node){
        
        mList.add(node);
        notifydatasetchanged();
    }
}

用这种写法在数据变化的时候,需要调用adapter.add*()的对应方法

  • 总结
    adapter更新是看对象的地址有没有变化,调用notifydatasetchanged()才会管用.
  • 问题
    notifydatasetchanged不管作用
    1.一般情况下,遇到notifydatasetchanged不管作用是指向的对象已经不是初始化adapter时的那个对象了.比如使用了上面第二种写法,却调用的第一种的方式.
    2.list的size==0;
    3.***
相关文章
|
7月前
|
Java Android开发
Adroid RecyclerView adapter 封装
Adroid RecyclerView adapter 封装
|
10月前
|
Android开发
ListView和ArrayAdapter、SimpleAdapter适配器的简单使用
ListView和ArrayAdapter、SimpleAdapter适配器的简单使用
RecyclerView学习-RecyclerView#Adapter#notifyDataSetChanged是如何更新数据的?
RecyclerView学习-RecyclerView#Adapter#notifyDataSetChanged是如何更新数据的?
Flutte 之 ListView
Flutte 之 ListView
59 0
Flutte 之 ListView
|
Android开发 数据格式 XML
|
缓存
ListView 的 Adapter 适配器模板
Adapter优化.png ListView中的Adapter优化的通用模板。 如果发现对ListView优化工作做完后,还会卡顿,可以检查notifyDataSetChanged()方法是否运用合理,频繁的调用此方法也会引发卡顿。
872 0
|
Android开发 索引 Java
android RecycleView Adapter简单封装
早些时候我们使用系统提供个的BaseAdapter的时候为了满足大家的需要,我们总会对BaseAdapter做一层上层的封装,然后对于实际业务我们只需要关心getView里面的View即可,是代码可读性和可维护性更高,特别是在多View的界面,这个优势就体现出来了,自从Android 5.0后系统提供的,先不说效率如何,这个既然是Google为我们提供的,我们姑且用之,不过说实话,对于它的写法
1301 0
|
Android开发
Android listview与adapter用法
简单实现listview的功能 转载自Android listview与adapter用法 用心做好每一件事,结果会给你最大的惊喜!
757 0