TabLayout + viewpager +Fragment fragment的刷新

fragment 的为刷新主要是因为之前的fragment的未被替换

首先viewpager的adapter如下:

public class MinePagerAdapterextends FragmentPagerAdapter {

private ListmFragments;

private ListmTabTitle;

private FragmentManagerfm;

public MinePagerAdapter(FragmentManager fm, List mFragments, List mTabTitle) {

super(fm);

this.fm = fm;

this.mFragments = mFragments;

this.mTabTitle = mTabTitle;

}

@Override

    public Fragment getItem(int position) {

return mFragments.get(position);

}

@Override

    public int getCount() {

return mFragments.size();

}

public Object instantiateItem(ViewGroup container,int position) {

for (int i =0; i

removeFragment(container, position);

}

return super.instantiateItem(container, position);

}

private void removeFragment(ViewGroup container,int index) {

String tag = getFragmentTag(container.getId(), index);

Fragment fragment =fm.findFragmentByTag(tag);

if (fragment ==null)

return;

FragmentTransaction ft =fm.beginTransaction();

ft.remove(fragment);

ft.commit();

ft =null;

fm.executePendingTransactions();

}

private String getFragmentTag(int viewId,int index) {

try {

Class cls = FragmentPagerAdapter.class;

Class[] parameterTypes = {int.class,long.class};

Method method = cls.getDeclaredMethod("makeFragmentName", parameterTypes);

method.setAccessible(true);

String tag = (String) method.invoke(this, viewId, index);

return tag;

}catch (Exception e) {

e.printStackTrace();

return "";

}

}

@Override

    public void destroyItem(ViewGroup container,int position, Object object) {

super.destroyItem(container, position, object);

}

@Override

    public int getItemPosition(Object object) {

return POSITION_NONE;

}

@Override

    public void setPrimaryItem(ViewGroup container,int position, Object object) {

super.setPrimaryItem(container, position, object);

}

@Override

    public CharSequence getPageTitle(int position) {

return mTabTitle.get(position);

}

}

 

在Activity种的使用:

private MinePagerAdapter fragmenadapter;

 private ArrayListmFragment = new ArrayList<>();

private  ArrayListmTitle = new ArrayList<>();

 

fragmenadapter =new MinePagerAdapter(getFragmentManager(),mFragment,mTitle);

viewpager.setAdapter(fragmenadapter);//给ViewPager设置适配器

mTabLayout.setupWithViewPager(viewpager);//将TabLayout与Viewpager联动起来

mTabLayout.setTabMode(TabLayout.MODE_FIXED);

viewpager.setCurrentItem(0);

刷新时,清除mTitle、mFragment, 然后重新赋值并且重新给viewpager设置adapter:

mTitle.clear();

mFragment.clear();

fragmenadapter = null;

//1、 重新赋值

mTitle.add(beans.getName());

mFragment.add(HomeOtherFragment.newInstance(beans));

// 2、重新setAdapter

fragmenadapter =new MinePagerAdapter(getFragmentManager(),mFragment,mTitle);

viewpager.setAdapter(fragmenadapter);//给ViewPager设置适配器

mTabLayout.setupWithViewPager(viewpager);//将TabLayout与Viewpager联动起来

mTabLayout.setTabMode(TabLayout.MODE_FIXED);

viewpager.setCurrentItem(0);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值