Ich weiß, dass es hier schon einige Themen gibt, aber ich konnte keine Lösung finden, die ich für meinen Fall verwenden könnte.
Ich habe eine funktionierende Schiebe-Galerie, die eine benutzerdefinierte FragmentActivity
und FragmentPagerAdapter
verwendet, die eine Liste von Fragmenten enthält.
Innerhalb der FragmentActivity
ist ein ImageView
"delete". Wenn Sie darauf klicken, wird die Funktion deleteMedia()
aufgerufen, die dann die aktuelle Fragment
entfernen soll und die folgende Fragment
sollte angezeigt werden.
Wie müsste ich das in meinem Beispiel machen?
FragmentActivity:
%Vor%FragmentPagerAdapter:
%Vor%Danke für Ihre Hilfe!
Zunächst schlage ich vor, dass Sie in Erwägung ziehen, Ihre FragmentPagerAdapter
so zu ändern, dass sie eher wie aussieht die Probe . Normalerweise haben Sie keine Liste von Fragmenten, nicht mehr als ein ArrayAdapter
enthält normalerweise eine Liste von Views
für die Zeilen. Normalerweise erstellen Sie die Fragmente bei Bedarf, und jemand anderes hält die Liste.
Um etwas zu löschen, lösche es dann aus deinen Modelldaten (was die FragmentPagerAdapter
normalerweise umschließt). Stellen Sie sicher, dass getCount()
dann die richtige Anzahl an Elementen zurückgibt. Rufen Sie dann notifyDataSetChanged()
für FragmentPagerAdapter
auf, was eine Neuzeichnung von ViewPager
auslösen sollte.
Ich habe eine Lösung gefunden, die die Methode "onPostResume ()" der Aktivität verifiziert und die notifyDataSetChanged innerhalb dieser aufruft.
%Vor%Wenn Sie FragmentPagerAdapter zum Hinzufügen und Entfernen von Fragmenten an zufälliger Position (nicht immer am Ende) dynamisch verwenden, gibt es eine Methode, der Sie mehr Beachtung schenken müssen, nämlich getItemId. Standardmäßig verwendet FragmentPagerAdapter die Position "viewId" als Tag-Name für Fragmente. Die Position ändert sich jedoch, wenn Sie Fragmente hinzufügen oder entfernen. Als Ergebnis erhalten Sie möglicherweise eine leere Seite, da die Position, die Sie hinzufügen, von einem vorhandenen Fragment belegt ist. Um dieses Problem zu lösen, überschreiben Sie getItemId.
%Vor%Tags und Links android android-fragments android-fragmentactivity fragmentpageradapter