如何在 viewPager 的 before 位置刷新图像?

How to refresh image at before position in viewPager?

我使用的 viewPager 具有 PinchImageView 的图像扩展,可提供缩放图像。 当我在 viewPager 中滚动到其他位置时,缩放图像保持旧状态。

PinchImageView 库link:https://github.com/boycy815/PinchImageView

如何刷新viewPager中before位置的图片?我想过使用 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);
        }
    }

移动到另一个位置:

必须是:

现有:

实现此目的的一种方法是 update/refresh 当前位置时 ViewPager 中的视图。

来自 PagerAdapter

source 的 java 文档

PagerAdapter supports data set changes. Data set changes must occur on the main thread and must end with a call to {@link #notifyDataSetChanged()} similar to AdapterView adapters derived from {@link android.widget.BaseAdapter}. A data set change may involve pages being added, removed, or changing position. The ViewPager will keep the current page active provided the adapter implements the method {@link #getItemPosition(Object)}.

OnPageChangeListener 添加到您的 ViewPager。在 onPageSelected 上调用 PagerAdapter 上的 notifyDataSetChanged

这应该调用PagerAdaptergetItemPosition。然后将其添加到您的 PagerAdapter:

public int getItemPosition(Object object) {
    return POSITION_NONE;
}

您应该在该位置获得更新的视图。