Wenn Viewpager
in Android verwendet wird, ist es möglich, jede Seite programmatisch auf das Ende zu verschieben? Zum Beispiel habe ich fünf Seiten und möchte Seite 2 auf die letzte Position (5. Position) verschieben, so dass Seite 3 zu 2 wird, 4 zu 3 wird und 5 zu 4 wird?
Danke
Ja. Ich werde versuchen, Ihren Fall zu beantworten, indem Sie mir zeigen, wie ich es gemacht habe, und ich werde ein Beispiel für Ihren Fall unter meinem Codebeispiel zeigen.
Um dies zu erreichen, müssen Sie im Prinzip verfolgen, welche Position Ihre Fragmente haben. Unten ist die Implementierung, die ich für meine FragmentPagerAdapter
verwendet habe, die eine ArrayList als Datenquelle verwendet.
Wenn Sie nun ein Objekt aus dem Dataset ( this.dataset
) entfernen und notifyDataSetChanged()
in Ihrer Instanz von MyFragmentPagerAdapter
aufrufen, wird das Objekt aus dem ViewPager entfernt (auch wenn es gerade angezeigt wird).
Nehmen wir an, this.dataset
enthält 5 Elemente und Sie möchten # 2 an das Ende des ViewPagers verschieben. Um dies zu erreichen, müssen Sie Position 2 an das Ende Ihrer Datenquelle setzen (entweder über Collection.Sort
oder auf andere Weise). Ich zeige dir einfach den einfachen Weg.
adapter.notifyDataSetChanged()
ruft schließlich viewpager.dataSetChanged()
auf, was wiederum adapter.getItemPosition(..)
auf jeder seiner Seiten aufruft. Das Ergebnis dieses Methodenaufrufs bestimmt, ob und wo die Seite (in diesem Fall Fragment) angezeigt wird.
Ich habe gerade über all das gelesen.
Die übliche Art, einen ViewPager zu verwenden, besteht darin, eine PagerAdapter-Klasse zu verwenden, die im richtigen Moment die richtigen Seiten eingibt. Es gibt nette Unterklassen von PagerAdapter, FragmentPagerAdapter und FragmentStatePagerAdapter, die einfacher zu verwenden sind.
Um jedoch die Seitenreihenfolge ändern zu können, müssen Sie Ihre eigene Unterklasse von PagerAdapter schreiben. Grundsätzlich gibt es zwei Möglichkeiten, auf denen der ViewPager weiß, auf welcher Seite Sie sich befinden: die Seitennummer und ein Schlüsselobjekt, das der Adapter ihm gegeben hat. Daher sollten Sie in der Lage sein, die Reihenfolge zu ändern, ohne dass sich der ViewPager zu sehr verliert.
Die blutigen Details, wie es gemacht wird, sind auf diese Seite . Ich habe es noch nicht versucht, aber ich werde es in den kommenden Wochen tun. Ich denke diese Seite sagt nicht alles. Es wird keine getItem () -Methode erwähnt, die die meisten Adapterklassen haben müssen. So sehe ich noch nicht, wie die Seiten dem ViewPager hinzugefügt werden.
Zeit, um einen Beispielcode zu finden und zu lesen.
Tags und Links android-viewpager