Android 在viewpager中使用listview时出现问题?
我想在viewpager的四个页面中添加一个listview,每个页面具有不同的数据。 向量页=新向量() 这里是适配器类 公共类CustomPagerAdapter扩展了PagerAdapter{Android 在viewpager中使用listview时出现问题?,android,listview,android-viewpager,Android,Listview,Android Viewpager,我想在viewpager的四个页面中添加一个listview,每个页面具有不同的数据。 向量页=新向量() 这里是适配器类 公共类CustomPagerAdapter扩展了PagerAdapter{ private Context mContext; private Vector<View> pages; public CustomPagerAdapter(Context context, Vector<View> pages) { this.mContext
private Context mContext;
private Vector<View> pages;
public CustomPagerAdapter(Context context, Vector<View> pages) {
this.mContext=context;
this.pages=pages;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View page = pages.get(position);
container.addView(page);
return page;
}
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
私有上下文mContext;
专用矢量页;
公共CustomPagerAdapter(上下文、矢量页){
this.mContext=上下文;
这个。页面=页面;
}
@凌驾
公共对象实例化项(视图组容器,int位置){
查看页面=页面。获取(位置);
container.addView(第页);
返回页面;
}
@凌驾
public int getCount(){
返回3;
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回视图.equals(对象);
}
@凌驾
公共项(视图组容器、int位置、对象){
container.removeView((视图)对象);
}
}
强制关闭后,logcat中出现错误
指定的子级已具有父级。必须首先对子级的父级调用removeView()。任何想法请!!!!!
现在我用四个listview修改了它。。。。而且它只显示了三页!!!第四个在哪里?如果pagerviewer一次只能保存三个页面,如何删除第四个位置的第一个页面,反之亦然???您在
实例化Item
方法的同一父级(容器)中添加了不同的视图。从实例化Item()中删除此行
在这里,您将对所有4次使用单个列表视图对象(查看寻呼机子对象)。但这是不可接受的。不能多次添加单个视图对象
而且ViewPager一次只接受3个活动的孩子(当前可见、当前可见之前、当前可见旁边)
因此,最好每次创建新的listview对象如果您将相同的listAppStore
实例添加到页面
,我错了吗
如果没有,则可能是错误的原因
您应该直接在适配器中初始化视图,而不是在适配器外部。适配器应仅提供传递到给定位置视图的数据。首先,它显示第一页的数据,然后在滑动页面上崩溃。。。但现在它没有显示任何东西,也没有强制关闭。
private Context mContext;
private Vector<View> pages;
public CustomPagerAdapter(Context context, Vector<View> pages) {
this.mContext=context;
this.pages=pages;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View page = pages.get(position);
container.addView(page);
return page;
}
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
container.addView(page);