我有viewpager有3个片段/页面,我必须只引用当前页面或片段,我正在调用mPagerAdapter.notifyDataSetChanged(),但它刷新所有页面,如何刷新或仅更改当前页面而不刷新或更改其他页面
答案 0 :(得分:2)
如果您想要Refresh/Notify
您的网页,可以这样做。
每当您想刷新页面时都这样做。
yourPager.setAdapter(yourAdapter);
yourPager.setCurrentItem(CurrentPosition); // this is suppose to be your pagePosition
这将Notify/Refresh
您的信息页。
答案 1 :(得分:0)
步骤1:使用addOnPageChangeListener侦听器
viewPagerSearch.addOnPageChangeListener(this);
第二步:使用回调
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//check position with index page to refresh that page
}
@Override
public void onPageScrollStateChanged(int state) {
}
答案 2 :(得分:0)
尝试将
View Pager
设置为viewPager.setAdapter(adapter); viewPager.setOffscreenPageLimit(3);
。
Path mpath = new Path();
mpath.moveTo(0, 100);
mpath.rQuadTo(20, 5, 40, 0);
mpath.rQuadTo(20, -5, 40, 0);
答案 3 :(得分:0)
试试这个:
首先你需要使用一个PagerAdapter,它将在MainActivity中扩展FragmentPagerAdapter,然后在适配器使用switch case的getItem()方法中调用片段,如
public Fragment getItem(int pos) {
switch (pos) {
case 0:
return FirstFragment.newInstance("FirstFragment, instance 1");
case 1:
return SecondFragment.newInstance("SecondFragment, instance 1");
case 2:
return ThirdFragment.newInstance("ThirdFragment, instance 1");
default:
return FirstFragment.newInstance("");
}
}
然后在活动的onCreate()中设置适配器,如:
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
pager.setAdapter(new YourPagerAdapter(getSupportFragmentManager()));
然后在您拥有的每个片段中使用以下方法:
public static FirstFragment newInstance(String text) {
FirstFragment f = new FirstFragment();
return f;
}
和
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
if (isNetworkAvailable()) {
makeRequest();// do network calling and populate your views from here
} else {
Toast.makeText(getActivity(), "You are not connected\nto the internet!", Toast.LENGTH_SHORT).show();
}
}
}
我也面临同样的问题但是使用这个解决方案解决了它。我希望这对你也有帮助。