Wann sollte getItemPosition prüfen, Veränderungen eines Elements die position?
In der Dokumentation der Methode getItemPosition in Android PagerAdapter Klasse besagt, dass es ist:
Aufgerufen, wenn die host-Ansicht ist der Versuch zu ermitteln, ob ein Element die position geändert hat.
Diese Methode soll aufgerufen werden, um anzuzeigen, ob ein Element die position in der Gruppe der Elemente, die für diesen adapter hat sich geändert.
Allerdings ist es nie Mitgliedstaaten, wenn eine überschreibende Methode sollte die position verändert werden. Bedeutet es die position ist, die unterschiedlich zu der position war es in der letzten Zeit die Artikel getItemPosition genannt wurde? Bedeutet das, dass das Element seine position ist anders, zum letzten mal notifyDataSetChanged genannt wurde? Oder bedeutet es, dass das Element seine position ist anders, als das Element wurde Hinzugefügt, um den viewPager?
InformationsquelleAutor Macha | 2012-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie sehen in ViewPager.java dass
getItemPosition
wird aufgerufen, nur indataSetChanged
. Dies bedeutet, dass das Element die position geändert, wenn es anders als das Letzte maldataSetChanged
genannt wurde.Ich würde dir keine sorgen, so viel über die Bedeutung von "geändert"; es gibt zwei Fälle:
getItemPosition
zurückPOSITION_UNCHANGED
;POSITION_UNCHANGED
oder die aktuelle position. So halten die Umsetzung einfach können Sie die Rückgabe der position (oderPOSITION_NONE
) und vergessen SiePOSITION_UNCHANGED
..InformationsquelleAutor aleb
Standardmäßig werden die Positionen der Elemente in einem ViewPager sind, gelten als fest; das ist, warum
getItemPosition()
standardmäßig gibtPOSITION_UNCHANGED
. Beim verschieben eines Elements um, ViewPager muss wissen, wo um ein Element zu entfernen (die alte position des Elements) und wo, um es hinzuzufügen. Dies ist, wasgetItemPosition()
verwendet wird. Es erlaubt Ihnen zu sagen, den ViewPager, welches Element wohin stecken, auch nach Ihren Seiten haben instanziiert wurde.getItemPosition()
wird nur aufgerufen, wenn Sie anrufennotifyDataSetChanged()
auf Ihre PagerAdapter. By design bedeutet, dass die "geänderten" Mittel "geändert, wenn der ViewPager letzten besiedelt die Seiten", wienotifyDataSetChanged()
Ursachen der ViewPager neu zu zeichnen, seine Kinder, wo nötig. In anderen Worten: "geändert" hat eine der Bedeutungen, die Sie erwähnt; was das eine ist die jüngste auftreten.Ich denke
getItemPosition
ist ziemlich schwierig zu verstehen, ohne eine Probe. Siehe mein Beispiel, wiegetItemPosition(...)
hier; Ich denke, es ist zu klären einige Dinge.InformationsquelleAutor Reinier