![](/img/trans.png)
[英]How to find the “last page” in a view pager. Or the total 'number' of views. Android Development
[英]Not able to update middle fragment in View Pager.
我一直在研究带有3个标签的TAB布局。
我的问题是我无法更新,请刷新页面之间的第二个选项卡。
根据我的调试,我从选项卡一滑到第二个,在getItem(int位置)调用了第三个,类似地,一个片段从第三个选项卡滑到了第二个。
viewpager的默认getOffscreenPageLimit为1 。 我什至无法将其设置为零计数。
在getItem处,位置一开始是1,但是一旦我滑动页面,它只会调用位置0和2。从不调用1。
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
这是我的ViewPagerSetUp
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new
ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new InvitedFragment(), "Invited");
adapter.addFragment(new InterestedFragment(), "Interested");
adapter.addFragment(new AttendingFragment(), "Attending");
viewPager.setAdapter(adapter);
}
这是我的ViewPager
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
public void refreshFragment(int position) {
mFragmentList.get(position).onResume();
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
addOnPageChangeListener是一个选项,但我也无法使用pageChangelistener刷新它。
我该如何治愈offpagepagelimit? 如何刷新每滑动页面上的每个标签?
谢谢。
尝试这个,
覆盖fragment中的以下方法,当可见fragment时调用
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//do your Stuffs
}
}
将此添加到您的活动中
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
viewPager.getAdapter().notifyDataSetChanged();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
在您的适配器中添加它,
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
如果未添加,则必须将View Pager添加到tabLayout中,然后尝试以下代码:
tabLayout.setupWithViewPager(viewPager);
您也要在refreshFragment方法中调用Parent Fragment(super)onResume方法,则必须调用SubFragment onResume方法:
mInvitedFragment.onResume();
mInterestedFragment.onResume();
mAttendingFragment.onResume();
您可以使用以下方法刷新第二个片段。将此方法放入片段中。
@Override
public void setUserVisibleHint(boolean visible) {
super.setUserVisibleHint(visible);
if (visible) {
// load data here
}else {
// fragment is no longer visible
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.