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

 

 

转载于:https://www.cnblogs.com/jeffery336699/p/9288627.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值