Fragment中,RecyclerView遇到notifyDataSetChanged无效情况说明

如果数据是这样进行的初始化操作

@Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment, container, false);
        initView(rootView);
        initData();
        return rootView;
    }

public void initData() {
    if (mData == null) {
        mData = new ArrayList<>();
    }
    mData.clear();
    ...
    数据填充
    ...
    if (mAdapter == null) {
       mAdapter = new Adpter();
        mRvList.setAdapter(mAdapter);
    } else {
        mAdapter.notifyDataSetChanged();
    }
}

次数如果Fragment切换出去再切换回来会走notifyDataSetChanged方法而不是重新创建,此时数据会显示不出来.原因是:
在使用notifyDataSetChanged方法更新列表数据时,一定要保证数据为同个对象(即hashCode要一致)

所以解决办法 就是从新创建adpter,并设置,不要调用notifyDataSetChanged.
或者保存上次的view,在从新调用onCreateView的时候复用.

本篇内容学习子互联网

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值