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.