ViewPager does not redraw content, remains/turns blank

前端 未结 13 909
萌比男神i
萌比男神i 2020-12-12 11:33

We\'re suffering from a very strange issue with ViewPager here. We embed lists on each ViewPager page, and trigger notifyDataSetChanged both on the list adapter and the view

13条回答
  •  死守一世寂寞
    2020-12-12 12:01

    I had similar issue. I cache views because I need only 3 views in ViewPager. When I slide forward everything is okay but when I start to slide backward occurs error, it says that "my view already has a parent". The solution is to delete unneeded items manually.

    @Override
        public Object instantiateItem(ViewGroup container, int position) {
            int localPos = position % SIZE;
            TouchImageView view;
            if (touchImageViews[localPos] != null) {
                view = touchImageViews[localPos];
            } else {
                view = new TouchImageView(container.getContext());
                view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                touchImageViews[localPos] = view;
            }
            view.setImageDrawable(mDataModel.getPhoto(position));
            Log.i(IRViewPagerAdpt.class.toString(), "Add view " + view.toString() + " at pos: " + position + " " + localPos);
            if (view.getParent() == null) {
            ((ViewPager) container).addView(view);
        }
            return view;
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object view) {
            //      ((ViewPager) container).removeView((View) view);
            Log.i(IRViewPagerAdpt.class.toString(), "remove view " + view.toString() + " at pos: " + position);
        }
    
    ..................
    
    private static final int SIZE = 3;
    private TouchImageView[] touchImageViews = new TouchImageView[SIZE];
    

提交回复
热议问题