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.

Respuestas a la pregunta(8)

Su respuesta a la pregunta