【已解决】 领券联盟viewpager无限循环问题
无限循环需要取余操作,然后我的报错说除数不能为0


上面这个是正常情况,setData先执行,但是我把getCount返回的改成Integer.MAX_VALUE或者任意整数时候,setData方法居然不执行了。。。结果如下,log没有输出setData的log,size也为0,好奇怪啊


适配器的代码如下
private List<String> mStrings = new ArrayList<>();
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
int realPosition = position % mStrings.size();
log.d(DetailViewPagerAdapter.this,"instantiateItem:"+System.currentTimeMillis());
log.d(DetailViewPagerAdapter.this,"position:"+position);
log.d(DetailViewPagerAdapter.this,"mStrings.size():"+mStrings.size());
log.d(DetailViewPagerAdapter.this,"realPosition:"+realPosition);
String s = mStrings.get(realPosition);
ImageView imageView = new ImageView(container.getContext());
Glide.with(imageView.getContext()).load(s).into(imageView);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
public void setData(List<String> list) {
log.d(DetailViewPagerAdapter.this,"setData:"+System.currentTimeMillis());
mStrings.clear();
mStrings.addAll(list);
notifyDataSetChanged();
}
你的setData不是外部调用的么?跟MAX_VALUE有什么关系呢?setData不是应该数据回来的时候设置么?那你去跟呀,这种问题,打断点就可以解决呢。