recyclerview notifyDataSetChanged無效果

可能出現(xiàn)的原因

1.在子線程中調(diào)用了notifyDataSetChanged;
2.適配器中數(shù)據(jù)源為空。

踩坑記(適配器中數(shù)據(jù)為空)

初始化代碼沒有問題

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

在請求到數(shù)據(jù)后,對數(shù)據(jù)源進行如下操作。

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

看一張圖來解釋一下為什么這樣做會有問題


解釋

所以此時更新適配器時,適配器中的數(shù)據(jù)A對象size還是為0,recyclerview看起來沒有任何的變化。

(綁定的綁寫錯了,大家當作沒看到喔??)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容