ViewPager+TabLayout+Fragment刷新Fragment中的數據


1.ViewPager與TabLayout的初始化:

1 private void initData() {
2         mTabFragmentAdapter = new TabFragmentFirstAdapter(getSupportFragmentManager(), mDeptType);
3         mVp.setAdapter(mTabFragmentAdapter);
4         mVp.addOnPageChangeListener(
5                 new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
6         mVp.setOffscreenPageLimit(3);
7         mTabLayout.setupWithViewPager(mVp);
8 }

 

2.刷新主要還是靠FragmentPagerAdapter的notifyDataSetChanged()

1 private void reflashData(int type, List<WorkOrderBean.RowsBean> list) {
2         mTabFragmentAdapter.setDataAndType(type, list);
3         mTabFragmentAdapter.notifyDataSetChanged();
4 }

3.當notify時,FragmentPagerAdapter中主要會回調getItemPosition(Object object)方法,在這里判斷是哪個Fragment

 1   @Override
 2     public int getItemPosition(Object object) {
 3         if (object instanceof WorkSubFirstFragment) {
 4             if (list0.size()==0)return super.getItemPosition(object);
 5             ((WorkSubFirstFragment) object).updateView(list0);
 6         } else if (object instanceof WorkSubFirstFragment1) {
 7             if (list1.size()==0)return super.getItemPosition(object);
 8             ((WorkSubFirstFragment1) object).updateView(list1);
 9         } else if (object instanceof WorkSubFirstFragment2) {
10             if (list2.size()==0)return super.getItemPosition(object);
11             ((WorkSubFirstFragment2) object).updateView(list2);
12         }
13         return super.getItemPosition(object);
14     }

 

4.定義Fragment中的更新視圖方法:

1 public void updateView(List<WorkOrderBean.RowsBean> rows) {
2         reflashSelfData(rows);
3 }
小貼士:
    添加數據時不要直接賦值,采用addList()方法最好,並且之前最好清空數據集
1 list0.clear();
2 list0.addAll(list);

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM