1
我有50个页面,需要不断更新当前片段,ChangeListener
工作正常,但是第一次刷新不起作用,当它变为可见时如何实现片段刷新用户?当他们对用户可见时,在查看寻呼机上更新片段
MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager(), data);
mViewPager.setAdapter(adapter);
int position = data.size() - 1;
adapter.getFragment(position).refresh();
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
adapter.getFragment(position).refresh();
}
@Override
public void onPageScrollStateChanged(int state) {}
});
PageAdapter
private class MyPagerAdapter extends FragmentStatePagerAdapter {
private final List<DateTime> mData;
private Map<Integer, PagerFragment> mMap = new HashMap<>();
public MyPagerAdapter(FragmentManager fm, List<DateTime> data) {
super(fm);
mData = data;
}
@Override
public Fragment getItem(int position) {
return PagerFragment.newInstance(mData.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
PagerFragment f = (PagerFragment) super.instantiateItem(container, position);
mMap.put(position, f);
return f;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
mMap.remove(position);
}
@Override
public int getCount() {
return mData.size();
}
public PagerFragment getFragment(int position) {
return mMap.get(position);
}
}