没有从 viewpager 获得正确的位置
Not getting the correct position from viewpager
我正在使用 viewpager 从服务器加载图像,每个片段应根据片段在适配器中的位置加载图像。因此,例如位置 0 将加载图像 0 位置 1 加载图像 1 等。在过去的两天里,我一直在努力获得正确的片段位置,总共我有 3 个片段,但是从打印输出中我已经添加到我可以看到的代码中只有位置 0 和 2,因此图像在位置 1 复制。
主要问题是我该如何解决这个问题?我想获得正确的位置并基于正确的图像。下面是 viewpager 代码和适配器代码,根据几种解决方案对其进行了多次修改,但是 none 其中似乎有效
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;
}
}
}
由于您正在使用指标..您必须从中获取当前页面...并使用它设置当前页面...
当使用指示器停止使用寻呼机或寻呼机侦听器时...任何侦听器都应设置为指示器。
titleIndicator.getCurrentItem()==0...
和
titleIndicator.setCurrent.....
我正在使用 viewpager 从服务器加载图像,每个片段应根据片段在适配器中的位置加载图像。因此,例如位置 0 将加载图像 0 位置 1 加载图像 1 等。在过去的两天里,我一直在努力获得正确的片段位置,总共我有 3 个片段,但是从打印输出中我已经添加到我可以看到的代码中只有位置 0 和 2,因此图像在位置 1 复制。
主要问题是我该如何解决这个问题?我想获得正确的位置并基于正确的图像。下面是 viewpager 代码和适配器代码,根据几种解决方案对其进行了多次修改,但是 none 其中似乎有效
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;
}
}
}
由于您正在使用指标..您必须从中获取当前页面...并使用它设置当前页面... 当使用指示器停止使用寻呼机或寻呼机侦听器时...任何侦听器都应设置为指示器。
titleIndicator.getCurrentItem()==0...
和
titleIndicator.setCurrent.....