динамически добавлять и удалять вид в viewpager

(Я нашел решение - см. Мой пост в разделе Ответ ниже.)

В моем приложении пользователь начнет с одного просмотра своих данных. Я хотел бы добавить ViewPager и позволить пользователю добавлять больше представлений по желанию. Как мне это сделать? (Я не хочу использовать FragmentPagerAdapter.)

Я прочитал бесчисленные посты и обзоры, но все еще чего-то не хватает. Вот что, я думаю, я понимаю:

MainActivity создает ViewPager и 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);      
}

Используйте PagerAdapter для предоставления наборов представлений. Для этого мне нужны методы для добавления и удаления представлений, что-то вроде этого; очевидно, нужно больше, чтобы сказать, что материал ViewPager изменился и как показать изменения:

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);
  }
}

Кроме того, мне нужно реализовать следующие жизненные методы. Я потерян здесь - что их вызывает и что они должны делать (хорошо, getCount очевиден)?

  public object instantiateItem (ViewGroup pager, int position);
  public void destroyItem (ViewGroup, int, Object);
  public int getCount ();
  public boolean isViewFromObject (View, Object);
Для чего нужны параметры ViewGroup - не содержит ли сама группа ViewPager?Что делает isViewFromObject - как объект связывается с представлением в первую очередь?Должен ли я вызывать startUpdate и finishUdate при добавлении или удалении представлений?

Благодарю.

Ответы на вопрос(8)

Ваш ответ на вопрос