Android ViewPager: Verschieben Sie eine Seite programmatisch?

8

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

    
mraviator 07.09.2012, 15:59
quelle

2 Antworten

31

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.

%Vor%

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.

%Vor%

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.

    
Reinier 11.02.2013, 22:24
quelle
1

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.

    
jpeg729 02.01.2013 01:39
quelle

Tags und Links