Scheint, dass das Aktualisierungsproblem zuvor besprochen wurde, aber keine der Lösungen funktionierte für mich.Fragmentierungsansicht während der Verwendung von FragmentStatePagerAdapter aktualisieren
Was ich versuche zu tun: Ich benutze FragmentStatePagerAdapter. Jede Position des Adapters enthält ein Fragment mit einem linearen Layout mit schachähnlichem Aussehen, wobei jede Zelle durch eine CheckedTextView dargestellt wird.
Und ein Listener, der auf Klicks hört und die vorherige Auswahl auf den Zellen entfernt und die neue Auswahl trifft.
Was Arbeits: Jedes Fragment geladen wird korrekt mit allen Daten/Standardzuständen (berechnet, während das Fragment in einer Liste geladen wird)
Wenn ich eine Zelle klicken, um alle die Zustände aus der Liste gespeichert Zellen werden korrekt abgerufen und ich kann die Statusänderung im Code während des Debuggens ändern. Gleichzeitig weise ich der CheckedTextView einen neuen Zustand zu, der eine Zelle repräsentiert. Dies wird wie:
Das Problem: Auch wenn die Werte werden gespeichert und zugeordnet richtig die Ansicht nicht die Werte der Zellen in der Ansicht aktualisiert nicht aktualisiert.
Tipps Ich habe versucht, die nicht gearbeitet haben: 1. Rufen Sie adapter.notifyDataSetChanged: Kann während nur mit FragmentStatePagerAdapter aufgerufen werden, wenn wir außer Kraft gesetzt haben:
@Override
public int getItemPosition(Object object){
return POSITION_NONE;
}
2. Hinzufügen Überschreiben Sie Methoden für DestroyItem und fügen Sie auch die Fragmente zu einer Map auf getItem hinzu:
Dies ist nicht geeignet, da ich mit arbeite FragmentStatePagerAdapter, so dass der ganze Zweck der Verwendung dieses PagerAdapters weg wäre.
3. Berufung invalidate: Das für dieses Szenario nicht geeignet ist, muss ich Echtzeit-Refresh.
4. setTag() -Methode in instantiateItem(): Ich glaube nicht, das in dieser Situation angemessen ist.
referenzierte Themen: Refresh images on FragmentStatePagerAdapter on resuming activity
ViewPager PagerAdapter not updating the View
notifyDataSetChanged fails to update ListView
ich versucht habe, meine Frage so klar wie möglich zu erklären, wenn jemand mehr Klärung bedarf, fragen .
Urgent Antworten werden sehr geschätzt,
Prost
**** aktualisieren *****
ich den ViewPagerIndicator verwenden, anstelle des Standard-ViewPager.
in Ihrem Setup, was jedes Fragment darstellt? Ist immer nur ein Fragment auf dem Bildschirm zu sehen? Wo ist der Code, den du hinzugefügt hast? Befindet es sich in der Fragmentklasse? Was ist GridRow? –
Hallo Sherif, jedes Fragment repräsentiert ein Schachbrett. Ich habe eine Aktivität, die ein Containerfragment aufruft. Dieses containerFragment hat einen Viewpager, in dem der FragmentStatePagerAadaper gesetzt ist. Jedes Adapterelement ist ein Fragment, und in diesem Fragment wird in seiner onCreatView jede Schachansicht initialisiert. Auch der Listener für eine Zelle befindet sich im selben Fragment, wo ich nach aktuellen Zuständen und neuem Zustand suche und den Zustand entsprechend ändere. Ein GridRow ist nur eine Zeile von checkedTextview, die eine Zelle darstellt. Ich hoffe das beantwortet all deine Fragen, Hinweise ...? – AliR
Die Tatsache, dass alles in Ihrem Fragment passiert, bedeutet, dass all dieser Ärger nicht benötigt wird. Sind Sie sicher, dass Ihr Selektor (Hintergrund) korrekt ist? Können Sie es und Ihre XML für jede Zelle zeigen. Normalerweise passiert der Fall, wenn die Ansicht nicht aktualisiert wird, wenn Sie versuchen, ein bestimmtes Fragment innerhalb des Viewpagers zu aktualisieren. –