【问题标题】:View Pager destroy items when i scroll down向下滚动时查看寻呼机销毁项目
【发布时间】:2018-05-08 04:40:06
【问题描述】:

我在回收站视图项目中使用图像滑块,每个项目都有视图分页器和自己的图像滑块,在回收站视图中加载所有项目后。第一项在其视图寻呼机内显示图像滑块,然后我向下滚动到其他项目可能是项目 10 或 11,然后我向上滚动到第一项然后查看寻呼机销毁其中的所有项目或片段,现在没有显示图像。请给我解决方案,我的适配器代码。无法使用 FragmentStatePagerAdapter,因为无权访问 Fragment Manager

    private class ViewPagerAdapter extends PagerAdapter {


   ArrayList<ImageInfo> allImages=new ArrayList<>();




    private ViewPagerAdapter(ArrayList<ImageInfo> allImages){
        this.allImages = allImages;
    }

    @Override
    public int getCount() {
        return allImages.size();
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View itemView = LayoutInflater.from(myContext).inflate(R.layout.fragment_big_row_image, container, false);

        ImageView imageListing = (ImageView) itemView.findViewById(R.id.imageListing);


        //MH: Loading Images in slider
        if(allImages.get(position).csImageFull.length()>0)
        {
            CommonMethods.ShowImage(myContext, imageListing, allImages.get(position).csImageFull);

        }
        else
        {
            CommonMethods.ShowImage(myContext, imageListing, allImages.get(position).csImageMedium);

        }

        container.addView(itemView);

        return itemView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
       // ((ViewPager) container).removeView((View) object);
       // instantiateItem(container,position);
    }

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

   /*****************************************************************************************************/

【问题讨论】:

  • 你用过adapter.notifydatasetchanged() 吗??
  • 我没有更改数据集,当我向下滚动时它会自动销毁数据集
  • 能发一下logcat吗,错误是什么
  • 它没有显示任何错误,只是调用了destroyItem方法

标签: java android slider


【解决方案1】:

在您的浏览器中设置屏幕页面。屏幕外页面限制定义了您希望在视图寻呼机中保留多少页面。将此数字设置为所需的页数。

mViewPager = (ViewPager)findViewById(R.id.pager);
mViewPager.setOffscreenPageLimit(2);

Here view pager 会在内存中保留最后访问的 2 个页面,并且不会销毁它们。

【讨论】:

    【解决方案2】:

    试试下面的代码:

    public class SliderPagerAdapter extends PagerAdapter {
    
        private Activity activity;
        private ArrayList<String> images;
    
        public SliderPagerAdapter(Activity activity) {
            this.activity = activity;
    
        }
    
        @NonNull
        @Override
        public Object instantiateItem(@NonNull ViewGroup container, int position) {
    
            View view = LayoutInflater.from(container.getContext())
                    .inflate(R.layout.item_slider, container, false);
            ImageView allImages = null;
    
          /MH: Loading Images in slider
            if(images.get(position).csImageFull.length()>0)
            {
                CommonMethods.ShowImage(myContext, imageListing, allImages.get(position).csImageFull);
    
            }
            else
            {
                CommonMethods.ShowImage(myContext, allImages, images.get(position).csImageMedium);
    
            }
    
            container.addView(itemView);
    
    
    
            return view;
        }
    
        public void setData(ArrayList<String> images) {
            this.images = images;
            notifyDataSetChanged();
        }
    
        @Override
        public int getCount() {
            return images == null ? 0 : images.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) {
            View view = (View) object;
            container.removeView(view);
        }
    }
    

    从activity调用setData方法并设置图片数组。

    Adapter.setData(yourData);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多