ViewPager刷新/仅更改当前页面/片段

时间:2016-09-09 04:59:06

标签: android android-viewpager

我有viewpager有3个片段/页面,我必须只引用当前页面或片段,我正在调用mPagerAdapter.notifyDataSetChanged(),但它刷新所有页面,如何刷新或仅更改当前页面而不刷新或更改其他页面

4 个答案:

答案 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();
        }

    }
}

我也面临同样的问题但是使用这个解决方案解决了它。我希望这对你也有帮助。