dynamicznie dodawaj i usuwaj widok do viewpagera

(Wymyśliłem rozwiązanie - zobacz mój post w sekcji Odpowiedź poniżej).

W mojej aplikacji użytkownik rozpocznie pojedynczy widok swoich danych. Chciałbym dodać ViewPager i pozwolić użytkownikowi dodawać więcej widoków według potrzeb. Jak mam to zrobic? (Nie chcę używać FragmentPagerAdapter).

Czytałem niezliczone posty i przeglądy, ale wciąż czegoś brakuje. Oto, co myślę, że rozumiem:

MainActivity tworzy ViewPager i 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);      
}

Użyj adaptera Pager, aby dostarczyć zestawy widoków. W tym celu potrzebuję metod dodawania i usuwania widoków, czegoś takiego; oczywiście potrzeba więcej, aby powiedzieć, że rzeczy ViewPager uległy zmianie i jak pokazać zmianę:

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

Ponadto muszę wdrożyć następujące witualne metody. Zgubiłem się - co je wywołuje i co mają robić (ok, getCount jest oczywisty)?

  public object instantiateItem (ViewGroup pager, int position);
  public void destroyItem (ViewGroup, int, Object);
  public int getCount ();
  public boolean isViewFromObject (View, Object);
Do czego służą parametry ViewGroup - czy zawierająca grupa nie jest sama ViewPager?Co robi isViewFromObject - w jaki sposób obiekt jest skojarzony z widokiem?Czy powinienem wywoływać funkcję startUpdate i kończyć Udate, gdy dodam lub usunę widoki?

Dzięki.

questionAnswers(8)

yourAnswerToTheQuestion