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();
    }

你可能感兴趣的:(notifyDatasetChanged无效的解决办法)