如何在viewPager中的位置前刷新图像?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在viewPager中的位置前刷新图像?相关的知识,希望对你有一定的参考价值。
我使用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);
}
}
搬到另一个位置:
实现此目的的一种方法是在当前位置更新/刷新ViewPager
中的视图。
来自source的PagerAdapter
的java文档
PagerAdapter支持数据集更改。数据集更改必须在主线程上发生,并且必须以{@link #notifyDataSetChanged()}调用结束,类似于从{@link android.widget.BaseAdapter}派生的AdapterView适配器。数据集更改可能涉及添加,删除或更改位置的页面。如果适配器实现方法{@link #getItemPosition(Object)},ViewPager将保持当前页面处于活动状态。
添加OnPageChangeListener
到你的ViewPager
。在onPageSelected
上你的notifyDataSetChanged
上的PagerAdapter
。
这应该叫getItemPosition
的PagerAdapter
。然后将此添加到您的PagerAdapter
:
public int getItemPosition(Object object) {
return POSITION_NONE;
}
您应该在该位置获得更新的视图。
以上是关于如何在viewPager中的位置前刷新图像?的主要内容,如果未能解决你的问题,请参考以下文章