2013-08-26 26 views
0

我想在每個頁面的不同數據的四頁viewpager中添加一個listview。 Vector pages = new Vector();在viewpager中使用listview的問題?

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()。任何想法請!!!!! 現在我改變了它與四個listview ....它只顯示三頁!!!哪裏是第四個?如果pagerviewer一次只能保存三頁如何刪除第四個位置上的第一個,反之亦然?

回答

0

你在instantiateItem method..remove這條線從instantiateItem()

container.addView(page); 
+0

同樣的錯誤! – user2696228

+0

首先它顯示第一頁的數據,並在滑動頁面上崩潰......但現在它不顯示任何東西,也不強制關閉。 – user2696228

0

加入在同一父(容器)不同視圖在這裏,使用的是一個單一的列表視圖對象對所有的4倍(查看尋呼機孩子)。但在這是不可接受的。您不能多次添加單個視圖對象。

而且ViewPager一次只接受3個活着的孩子(當前可見,在當前可見之前,在當前可見之後)。

因此,最好創建新的ListView對象每次

0

我錯了假設要添加的listAppStore同一個實例來pages

如果不是,它是錯誤的可能原因。

您應該直接在適配器中初始化您的視圖,而不是在它之外。該適配器只應提供傳遞給給定位置的視圖的數據。