recyclerview notifyDataSetChanged无效果

可能出现的原因

1.在子线程中调用了notifyDataSetChanged;
2.适配器中数据源为空。

踩坑记(适配器中数据为空)

初始化代码没有问题

mTypeConditionData = new ArrayList<>();
mTypeAreaConditionAdapter = new TypeAndAreaAdapter(getActivity(), mTypeConditionData);
mTypeAreaRecycler.setAdapter(mTypeAreaConditionAdapter);

在请求到数据后,对数据源进行如下操作。

private ArrayList<ChooseDateBean> getCategoryData(FilterItemInfoBean[] data) {
    if (data == null || data.length <= 0) {
        return null;
    }

    ArrayList<ChooseDateBean> beans = new ArrayList<>();

    for (FilterItemInfoBean aData : data) {
        if ("category_id".equals(aData.getName()) || "meetingroom_space".equals(aData.getName())) {
            FilterItemOptionInfoBean[] optionInfoBean = aData.getOptions();
            if (optionInfoBean == null) {
                continue;
            }

            beans.add(new ChooseDateBean(TypeAndAreaAdapter.TYPE_TITLE, aData.getLabel()));

            for (FilterItemOptionInfoBean anOptionInfoBean : optionInfoBean) {
                ItemContentBean bean = new ItemContentBean();
                bean.setText(anOptionInfoBean.getLabel());
                bean.setSelected(false);
                beans.add(new ChooseDateBean(TypeAndAreaAdapter.TYPE_ITEM, bean));
            }
        }
    }

    return beans;
}

更新适配器

mTypeConditionData = getCategoryData(data);
mTypeAreaConditionAdapter.notifyDataSetChanged();

看一张图来解释一下为什么这样做会有问题


解释

所以此时更新适配器时,适配器中的数据A对象size还是为0,recyclerview看起来没有任何的变化。

(绑定的绑写错了,大家当作没看到喔😄)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容