Ich versuche, eine statische Klasse zu verwenden, um Wert an eine Ansicht zu übergeben, anstatt Absicht zu verwenden, da ich eine große Datenmenge übergeben muss. Manchmal bekomme ich diesen Fehler und konnte nicht herausfinden, was der Hauptgrund ist
Fehler: -
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 101, found: 200
Meine Pager-Klasse
%Vor%Meine statische Klasse
%Vor%Wie ich die Aktivität anrufe
%Vor%schau dir deinen Code an:
%Vor% Dieser Code wird verwendet, um die Ansicht zu aktualisieren, wenn sich die Ansicht ändert. es heißt auch notifyDataSetChanged()
seine optionale overwride-Methode, damit Sie sie entfernen können.
Sehen Sie sich diese Antwort an: ViewPager PagerAdapter aktualisiert die Ansicht nicht
oder Sie können die FragmentStatePagerAdapter
in FragmentPagerAdapter
Manchmal tritt dieser Fehler auf.
Hier ist mein Vorschlag:
In Ihrem DataResult
- & gt; getData()
gebe eine Kopie der Daten zurück.
DataResult
ist ein Singleton und enthält die Daten. Wenn Ihre Ansicht die Daten erhält, erhält die Ansicht die Datenreferenz, die der DataResult
enthält. Dann würde setData()
den Verweis data
ändern. Hier kommt die IllegalStateException.
Ich hoffe, es würde funktionieren:)
Ich denke, Ihre DataResult
-Klasse ist nicht notwendig.
Laut Ihrem Kommentar erhalten Sie den Fehler, während Sie den Datensatz aktualisieren. Ich denke, Sie erhalten Daten von einer REST-API oder einem anderen Webdienst. Weisen Sie dann die Daten, die Sie von der API erhalten, einer temporären Array-Liste zu und aktualisieren Sie diese temporäre Array-Liste, während Sie neue Daten erhalten. Berühren Sie nicht die Variable mListA
, bis Sie mit dem Empfang von Daten fertig sind. Nachdem Sie die Daten aus der API abgerufen haben, weisen Sie die Liste der temporären Arrays, die Sie für mListA
verwendet haben, direkt in einer Zeile an.
Rufen Sie dann erneut
an %Vor%Dies sollte Ihren Fehler lösen.
Tags und Links java android singleton android-intent static