2013-08-26 5 views
0

Я хочу добавить один список в четыре страницы viewpager с разными данными для каждой страницы. Vector pages = new Vector();проблемы с listview, использующие в viewpager?

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 содержит только три страницы за один раз, как удалить первый на четвертой позиции и наоборот ????

ответ

0

вы добавляете различные точки зрения в том же родителя (контейнер) в instantiateItem method..remove эту линию от instantiateItem()

container.addView(page); 
+0

такой же ошибка !!!! – user2696228

+0

во-первых, он показывал данные для первой страницы и рушится на скользящей странице ... но теперь он ничего не показывает, а также не закрывает. – user2696228

0

Здесь Вы используете один список просмотра объекта для всех 4-х раз (Просмотр дочерних элементов пейджера). Но в этом неприемлемо. Вы не можете добавить один объект просмотра более одного раза.

А также ViewPager принимает только 3 дочерних живых за раз (текущий вид, предшествующий текущей видимой, рядом с текущей видимой).

Таким образом, лучше создать новый объект ListView каждый раз

0

Я ошибаюсь предполагая, что вы добавляете один и тот же экземпляр listAppStore к pages?

Если нет, это возможная причина ошибки.

Вы должны инициализировать свои виды непосредственно в адаптере, а не за его пределами. Адаптер должен быть обеспечен только данными, которые передаются в представление для данной позиции.

Смежные вопросы