没有从viewpager获得正确的位置

时间:2015-08-27 14:47:15

标签: android android-fragments android-viewpager viewpagerindicator

我使用viewpager来从服务器加载图像,每个片段应该根据适配器中片段的位置加载图像。所以例如位置0将加载图像0位置1加载图像1等最近两天我正在获取正确的片段位置,总共我有3个片段然而从打印输出我添加到我可以看到的代码只有位置0和2,因此图像在位置1重复。

主要问题是如何解决这个问题?我想获得正确的位置,并基于正确的图像。下面是viewpager代码和适配器代码,它基于几个解决方案被修改了几次,但它们似乎都没有工作

public class LoadCarFullSizeImage extends AppCompatActivity{

private ViewPager viewPager;
protected String imagePath;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.car_images);

    imagePath=getIntent().getStringExtra("imagePath");

    viewPager=(ViewPager)findViewById(R.id.vp_carViewPager);

    CirclePageIndicator titleIndicator = (CirclePageIndicator)findViewById(R.id.titles);


    PagerAdapter  mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager(),imagePath);
    viewPager.setAdapter(mPagerAdapter);

    titleIndicator.setViewPager(viewPager);


}




@Override
public void onBackPressed() {
    if (viewPager.getCurrentItem() == 0) {
        // If the user is currently looking at the first step, allow the system to handle the
        // Back button. This calls finish() on this activity and pops the back stack.
        super.onBackPressed();
    } else {
        // Otherwise, select the previous step.
        viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
    }
}



private static class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter{

    private String imgPath;

    public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm, String _imagePath) {
        super(fm);
        this.imgPath=_imagePath;
    }


    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0: // Fragment # 0 - This will show FirstFragment
                return CarImageFragment.newInstance(0, imgPath);
            case 1: // Fragment # 0 - This will show FirstFragment different title
                return CarImageFragment.newInstance(1, imgPath);
            case 2: // Fragment # 1 - This will show SecondFragment
                return CarImageFragment.newInstance(2, imgPath);
            default:
                return null;
        }

    }


    @Override
    public int getCount() {
        return 3;
    }
}

}

1 个答案:

答案 0 :(得分:0)

由于您正在使用指示器..您必须从中获取当前页面...并使用它设置当前页面... 当使用寻呼机或寻呼机监听器使用指示器停止时......任何监听器都应设置为指示器。

titleIndicator.getCurrentItem()==0...

titleIndicator.setCurrent.....