ViewPager循环滑动时,向右滑出现异常:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
处理的方式:
第一步:在重写的instantiateItem(??)方法中,首先判断容器是否为空,若不为空则将父容器中的子View移除,如:
if (container!=null) {
container.removeView(v);
}
container.addView(v);
然后再往父容器中添加子View;
第二步:在重写的destroyItem(??)方法中,不需任何操作
代码如下:
package com.wen.test;
import java.util.ArrayList;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyPagerAdapter extends PagerAdapter{
private List data;
public MyPagerAdapter(List data) {
super();
if(data==null){
data=new ArrayList();
}
this.data = data;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v = data.get(position%data.size());
if (container!=null) {
container.removeView(v);
}
container.addView(v);
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//注意此处不需要再调用removeView()方法了
// container.removeView(data.get(position%data.size()));
}
@Override
public int getCount() {
return 3000;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
}