我正在构建一个画廊应用程序。我的MainActivity中有一个内部类,它扩展了PagerAdapter
private class ImagePagerAdapter extends PagerAdapter{
@Override
public int getCount() {
return images.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
LinearLayout llImage = (LinearLayout) getLayoutInflater().inflate(R.layout.view_pager_item, null);
SubsamplingScaleImageView draweeView = (SubsamplingScaleImageView) llImage.getChildAt(0);
draweeView.setImage(ImageSource.uri(images.get(position)));
container.addView(llImage, 0);
return llImage;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}
}
项目是动态创建的。我的应用程序允许用户放大这些页面(项目)中的图片,当我滑动到下一页时,ViewPager保存缩放状态。但是,当我返回到上一页时,我希望看到一张默认大小的图片,而不作任何更改。
考虑到这些项目是动态创建的,当它们再次出现在屏幕上时,我如何影响存储的项?
发布于 2015-07-05 08:34:52
你在这里出了点问题。请考虑以下几点:
如果您在视图寻呼机中有三个页面,当您的应用程序出现在屏幕上时,第一页和第二页将被初始化。当你滑动到第二页时,第三页将初始化,但第一页尚未被销毁。只有当你滑动到第三页时它才会被摧毁。
因此,当你在第2页,你滑动回第一页,什么都不会改变,因为该页没有被破坏。如果您想在回拨时更改某些内容,我建议您实现OnPageChangeListener
吗?
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
public void onPageSelected(int position) {
// reset the zoom
}
});
https://stackoverflow.com/questions/31228422
复制相似问题