我使用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;
}
}
}
答案 0 :(得分:0)
由于您正在使用指示器..您必须从中获取当前页面...并使用它设置当前页面... 当使用寻呼机或寻呼机监听器使用指示器停止时......任何监听器都应设置为指示器。
titleIndicator.getCurrentItem()==0...
和
titleIndicator.setCurrent.....