So scheint es, dass bei der Verwendung eines ViewPager der OnPageSelected Listener nicht für die erste Seite mit dem gleichen Problem wie this aufgerufen wird.ViewPager onPageAusgewählt für die erste Seite
Ich habe einige Logik, die einige teurer UI-Elemente für die aktuell ausgewählte Seite und das funktioniert auffüllt, wenn Seite geändert wird, aber it doesn't work for the first page.
Wenn ich das aktuelle Element nach dem Listener, der Rückruf für die gefeuert wird erste Seite, aber die Aussicht ist noch nicht initialisiert, so kann ich es nicht manipulieren:
// Inside PagerAdapter.instantiateItem
ViewHolder vh = new ViewHolder();
cursor.moveToPosition(position);
vh.view = adapter.newView(context, cursor, null);
// Set position as tag so we can retrieve it with findViewByTag
vh.view.setTag(position);
((ViewPager) collection).addView(vh.view,0);
return vh;
// Inside MyActivity.onCreate
pagerAdapter = new SingleMessagePagerAdapter(this, cursor);
pager = (ViewPager)findViewById(R.id.message_pager);
pager.setAdapter(pagerAdapter);
pager.setOnPageSelectedListener(this);
pager.setCurrentItem(selectedItem);
// Inside MyActivity.onPageSelected
// Retrieve tagged view
View view = pager.findViewWithTag(position);
Hier view
endet null sein, weil PagerAdapter.instantiateItem
noch nicht ausgeführt worden. Ich denke also, meine Frage ist, an welcher Stelle im Aktivitäts-Lebenszyklus kann ich sicher sein, dass der ViewPager die Ansicht initialisiert hat? Ich habe versucht, dies innerhalb Activity.onAttachedToWindow
und Activity.onResume
zu tun, aber es scheint, dass beide vor PagerAdapter.instantiateItem
gefeuert werden.
Dies sollte funktionieren, aber was, wenn Sie durch eine Liste von Seiten blättern, deren Nummer nicht vorgegeben? Wie eine Liste von Artikeln, die aus dem Internet geholt werden und jeder von ihnen muss in jedem dieser Pager einzeln angezeigt werden? –
Definieren Sie getCount() in FragmentPagerAdapter dynamisch oder versuchen Sie es in ViewPager zu aktivieren !! – SSKahani