【问题标题】:problems with listview using in viewpager?在 viewpager 中使用 listview 的问题?
【发布时间】:2013-08-26 10:26:53
【问题描述】:

我想在 viewpager 的四个页面中添加一个列表视图,每个页面都有不同的数据。 矢量页面 = new Vector();

pages.add(listAppStore1);
pages.add(listAppStore2);
pages.add(listAppStore3);
pages.add(listAppStore4);

    ViewPager vp = (ViewPager) findViewById(R.id.viewpager);
    CustomPagerAdapter adapter = new CustomPagerAdapter(AppsActivity.this,pages);
    vp.setAdapter(adapter);

    vp.setOnPageChangeListener(new OnPageChangeListener() {

        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub

        }

        public void onPageScrolled(int arg0, float arg1, int position) {
            // TODO Auto-generated method stub


        }

        public void onPageScrollStateChanged(int position1) {
            // TODO Auto-generated method stub
            if (position1==0) {
                 modifydata();
                                     myAppStore.setadapter(mStoreAdapter);
            } else if (position1==1) {
                modifydata();
                                     myAppStore.setadapter(mStoreAdapter);
            }else if (position1==2) {
                modifydata();
                                     myAppStore.setadapter(mStoreAdapter);
            }else if (position1==3) {
                      modifydata();
                                     myAppStore.setadapter(mStoreAdapter);
            }
        }
    });

}

这是适配器类 公共类 CustomPagerAdapter 扩展 PagerAdapter {

 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);
 }

}

强制关闭后我在 logcat 中出现错误 指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()。请有任何想法!!!! 现在我用四个列表视图改变了它....它只显示了三页!!!第四页在哪里?如果 pagerviewer 一次只保存三个页面,如何删除第四个位置的第一个页面,反之亦然????

【问题讨论】:

    标签: android listview android-viewpager


    【解决方案1】:

    您正在instantiateItem 方法中在同一父级(容器)中添加不同的视图。从instantiateItem() 中删除此行

     container.addView(page);
    

    【讨论】:

    • 首先它显示第一页的数据并在滑动页面上崩溃......但现在它没有显示任何东西,也没有强制关闭。
    【解决方案2】:

    在这里,您在所有 4 次中都使用了一个列表视图对象(查看寻呼机子项)。但在这方面是不能接受的。您不能多次添加单个视图对象。

    而且 ViewPager 一次只接受 3 个活着的孩子(当前可见,在当前可见之前,在当前可见之后)。

    所以,最好每次都创建新的列表视图对象

    【讨论】:

      【解决方案3】:

      假设您将listAppStore 的相同实例添加到pages,我错了吗?

      如果不是,则可能是错误原因。

      您应该直接在适配器中初始化视图,而不是在适配器之外。适配器应该只提供传递给给定位置的视图的数据。

      【讨论】:

        猜你喜欢
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        • 2019-05-31
        • 2015-05-09
        • 2014-01-07
        • 1970-01-01
        • 1970-01-01
        • 2016-05-07
        相关资源
        最近更新 更多