notifyDatasetChanged无效的解决办法

  • 出现问题
    比如这样给适配器传一个集合
        List datas;
        datas = DBDao.selectMyClock(); //此句是返回一个List
        adapter = new AlarmClockListAdapter(getContext(), datas);
        myClocks.setAdapter(clocksAdapter);

数据库刷新了,然后想这样刷新数据

    private void refresh() {
        datas = DBDao.selectMyClock();
        adapter.notifyDataSetChanged();
    }

是无效的,虽然这地方的datas指向了新的集合对象,但是在adapter的构造函数里传进去的集合还是原先的。所以有2种方式可以解决

1:清空集合,再将新的数据添加进去即可

    public void refresh() {
        datas.clear();
        datas.addAll(DBDao.selectMyClock());
        adapter.notifyDataSetChanged();
    }

2、将新集合传到adapter里去

    public void refresh(List list) {
        datas = list
        adapter.notifyDataSetChanged();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容