Agregar y quitar dinámicamente la vista a viewpager
(Descubrí una solución. Por favor, vea mi publicación en la sección de respuestas a continuación.)
En mi aplicación, el usuario comenzará con una vista única de sus datos. Me gustaría agregar un ViewPager y permitir que el usuario agregue más vistas como desee. ¿Cómo hago esto? (No quiero usar el FragmentPagerAdapter.)
He leído innumerables publicaciones y resúmenes, pero todavía me falta algo. Esto es lo que creo que entiendo:
MainActivity crea un ViewPager y PagerAdapter:
ViewPager pager = null;
MainPagerAdapter adapter = null;
public void onCreate (Bundle savedInstanceState)
{
super.onCreate (savedInstanceState);
pager = new ViewPager (this);
setContentView (pager);
adapter = new MainPagerAdapter();
pager.setAdapter (adapter);
View v0 = code_to_create_initial_view();
adapter.add (v0, 0);
}
Utilice un PagerAdapter para proporcionar los conjuntos de vista. Para esto parece que necesito métodos para agregar y eliminar vistas, algo como esto; obviamente se necesita más para decirle que el contenido del ViewPager ha cambiado y cómo mostrar el cambio:
class MainPagerAdapter extends PagerAdapter
{
// This holds all the currently displayable views, in order from left to right.
private ArrayList<View> views = new ArrayList<View>();
public void addView (View v, int position)
{
views.add (position, v);
}
public void removeView (int position)
{
views.remove (position);
}
}
Además, necesito implementar los siguientes métodos vitales. Estoy perdido aquí: ¿cómo los llaman y qué se supone que deben hacer (ok, getCount es obvio)?
public object instantiateItem (ViewGroup pager, int position);
public void destroyItem (ViewGroup, int, Object);
public int getCount ();
public boolean isViewFromObject (View, Object);
¿Para qué sirven los parámetros de ViewGroup? ¿No es el grupo que contiene el ViewPager?¿Qué hace isViewFromObject? ¿Cómo se asocia un objeto con una vista en primer lugar?¿Debo llamar a startUpdate y finishUdate cuando agrego o elimino vistas?Gracias.