若是数据是这样进行的初始化操做ide
@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的时候复用.code
本篇内容学习子互联网对象