1.ViewPager与TabLayout的初始化:
11 private void initData() { 22 mTabFragmentAdapter = new TabFragmentFirstAdapter(getSupportFragmentManager(), mDeptType); 33 mVp.setAdapter(mTabFragmentAdapter); 44 mVp.addOnPageChangeListener( 55 new TabLayout.TabLayoutOnPageChangeListener(mTabLayout)); 66 mVp.setOffscreenPageLimit(3); 77 mTabLayout.setupWithViewPager(mVp); 88 }
2.刷新主要还是靠FragmentPagerAdapter的notifyDataSetChanged()
11 private void reflashData(int type, List<WorkOrderBean.RowsBean> list) { 22 mTabFragmentAdapter.setDataAndType(type, list); 33 mTabFragmentAdapter.notifyDataSetChanged(); 44 }
3.当notify时,FragmentPagerAdapter中主要会回调getItemPosition(Object object)方法,在这里判断是哪个Fragment
1 1 @Override 2 2 public int getItemPosition(Object object) { 3 3 if (object instanceof WorkSubFirstFragment) { 4 4 if (list0.size()==0)return super.getItemPosition(object); 5 5 ((WorkSubFirstFragment) object).updateView(list0); 6 6 } else if (object instanceof WorkSubFirstFragment1) { 7 7 if (list1.size()==0)return super.getItemPosition(object); 8 8 ((WorkSubFirstFragment1) object).updateView(list1); 9 9 } else if (object instanceof WorkSubFirstFragment2) { 1010 if (list2.size()==0)return super.getItemPosition(object); 1111 ((WorkSubFirstFragment2) object).updateView(list2); 1212 } 1313 return super.getItemPosition(object); 1414 }
4.定义Fragment中的更新视图方法:
11 public void updateView(List<WorkOrderBean.RowsBean> rows) { 22 reflashSelfData(rows); 33 }
小贴士:
添加数据时不要直接赋值,采用addList()方法最好,并且之前最好清空数据集
11 list0.clear(); 22 list0.addAll(list);