RecyclerView 中adapter.notifyDataSetChanged()无效的问题

来源:互联网 发布:java软件工程师培训班 编辑:程序博客网 时间:2024/06/07 15:20

网上找了很多答案,看了很多博客,让我感觉都讲得模模糊糊,最后是这篇博客解决了我的问题:http://blog.csdn.net/csdn_lqr/article/details/50947825

其实要让notifyDataSetChanged()有效就只是一个要点数据源有变化

而在我的项目中导致数据源没有发生变化的原因是:

private List<String> resultList = new ArrayList<>();//数据源fab.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View view) {        /*        ...        其他操作        */        resultList = Calc.Calculate();        adapter.notifyDataSetChanged();    }    }});
public class Calc {    //用于临时存放结果。    private static List<String> result = new ArrayList<>();    public static List<String> Calculate(){        /*其他操作*/        return result;    }}

在每次调用Calc.Calculate()方法时,都new了一个新的临时变量,所以返回给resultLIst的并不是同一个数据源(即新数据保存在新new的一个空间里),导致一开始给adapter配置的数据源始终无变化。

我的方法是将数据源传入Calculate方法中。

private List<String> resultList = new ArrayList<>();//数据源fab.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View view) {        /*        ...        其他操作        */        Calc.Calculate(resultList);        adapter.notifyDataSetChanged();    }    }});
public class Calc {    public static void Calculate(List<String> result){        /*其他操作*/    }}
阅读全文
0 0
原创粉丝点击