Je suis à l'aide de la ViewPager à partir de la bibliothèque de compatibilité. J'ai succussfully ai eu l'affichage de plusieurs vues qui je peux par le biais de la page.
Cependant, je vais avoir un moment difficile de déterminer comment mettre à jour le ViewPager avec un nouvel ensemble de points de Vue.
J'ai essayé toutes sortes de choses comme appelant mAdapter.notifyDataSetChanged()
, mViewPager.invalidate()
même d'en créer une nouvelle carte à chaque fois que je veux utiliser une nouvelle Liste de données.
Rien n'a aidé, le textviews demeurent inchangées par rapport aux données d'origine.
Merci pour votre temps.
Mise à jour: J'ai fait un petit projet de test et j'ai presque été en mesure de mettre à jour les points de vue. Je vais coller la classe ci-dessous.
Ce qui ne semble pas de mise à jour, cependant, est le 2ème point de vue, le " B "reste, il doit afficher" Y " après avoir appuyé sur le bouton de mise à jour.
public class ViewPagerBugActivity extends Activity {
private ViewPager myViewPager;
private List<String> data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data = new ArrayList<String>();
data.add("A");
data.add("B");
data.add("C");
myViewPager = (ViewPager) findViewById(R.id.my_view_pager);
myViewPager.setAdapter(new MyViewPagerAdapter(this, data));
Button updateButton = (Button) findViewById(R.id.update_button);
updateButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
updateViewPager();
}
});
}
private void updateViewPager() {
data.clear();
data.add("X");
data.add("Y");
data.add("Z");
myViewPager.getAdapter().notifyDataSetChanged();
}
private class MyViewPagerAdapter extends PagerAdapter {
private List<String> data;
private Context ctx;
public MyViewPagerAdapter(Context ctx, List<String> data) {
this.ctx = ctx;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object instantiateItem(View collection, int position) {
TextView view = new TextView(ctx);
view.setText(data.get(position));
((ViewPager)collection).addView(view);
return view;
}
@Override
public void destroyItem(View collection, int position, Object view) {
((ViewPager) collection).removeView((View) view);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public void startUpdate(View arg0) {
}
@Override
public void finishUpdate(View arg0) {
}
}
}