返回时ViewPager没有显示正确的图像

时间:2017-07-18 12:41:42

标签: java android image android-viewpager

我使用ViewPager完全显示图像(在滑动模式下)1-5张图像。 我的页面适配器

public class SimplePagerAdapter extends FragmentPagerAdapter {

        public SimplePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            Logger.e("POSITION = "+position);
            currentBitmap = MediaHelper.bitmaps.get(position);
            return fragments.get(position);
        }

        @Override
        public int getCount() {
            return IMAGE_COUNT;
        }
    }

示例i有3张图片。 当我从开始(从左到右)滑动时,我的Logger显示位置0,1,2。当我向后滑动(从右到左)记录器不工作并且“图像没有更新到previsius,它保留我的最后一个图像(就像位置2上的图像将在所有位置(0,1))。 可以帮助我,如何解决?

fragments its ArrayList<Fragments>

它的工作原理:img1 = a,img2 = b,img3 = c; 从a到b移动到c 当从c回到b - b有img3时,从b移到a,a有img3。

[溶液] 将fragmentAdapter更改为PagerAdapter

  class CustomPagerAdapter extends PagerAdapter {

        Context mContext;
        LayoutInflater mLayoutInflater;

        public CustomPagerAdapter(Context context) {
            mContext = context;
            mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {
            return MAX_PAGES;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((LinearLayout) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            View itemView = mLayoutInflater.inflate(R.layout.image_fragment_one, container, false);
            ImageView imageView = (ImageView) itemView.findViewById(R.id.imageViewFragment);
            imageView.setImageBitmap(MediaHelper.bitmaps.get(position));
            container.addView(itemView);
            return itemView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((LinearLayout) object);
        }
    }

0 个答案:

没有答案