我使用viewPager具有PinchImageView的图像扩展,它提供缩放图像。 当我在viewPager中将位置滚动到其他位置时,缩放图像保持旧状态。
PinchImageView库链接:https://github.com/boycy815/PinchImageView
如何在viewPager中的位置前刷新图像?我认为使用destroyItem
但未找到如何操作。
private class MyViewPagerAdapter extends PagerAdapter {
PinchImageView photoView;
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
View view = inflater.inflate(R.layout.show_images, container, false);
photoView = ViewUtil.findById(view, R.id.photoView);
photoView.setViewPager(viewPager);
Image image = allImages.get(position);
if (image != null) {
String path = image.getPath();
if (hasPathControl(path)) {
setImage();
loadImage(path, photoView);
}
container.addView(view);
return view;
}
@Override
public int getCount() {
return allImages.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object obj) {
return view == (obj);
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
Mylog.i(TAG, " destroyItem position " + position);
container.removeView((View) object);
}
private void loadImage(String path, ImageView imageView) {
glideRequests.load(path)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.dontTransform()
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.transition(withCrossFade())
.into(imageView);
}
}
转到另一个位置:
答案 0 :(得分:1)
实现此目的的一种方法是在ViewPager
当前位置时更新/刷新视图。
来自PagerAdapter
PagerAdapter支持数据集更改。数据集更改必须在主线程上发生,并且必须以{@link #notifyDataSetChanged()}调用结束,类似于从{@link android.widget.BaseAdapter}派生的AdapterView适配器。数据集更改可能涉及添加,删除或更改位置的页面。如果适配器实现方法{@link #getItemPosition(Object)},ViewPager将保持当前页面处于活动状态。
向OnPageChangeListener
添加ViewPager
。在onPageSelected
上拨打notifyDataSetChanged
上的PagerAdapter
。
这应该调用getItemPosition
的{{1}}。然后将其添加到您的PagerAdapter
:
PagerAdapter
您应该在该位置获得更新的视图。