Java.lang.IllegalStateException: Die Anwendung PagerAdapter hat den Inhalt des Adapters geändert, ohne PagerAdapter # notifyDataSetChanged android aufzurufen

9

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%     
viper 09.01.2017, 12:21
quelle

4 Antworten

0

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

ändern     
Sagar Chavada 09.01.2017 12:34
quelle
0

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:)

    
Rust Fisher 04.02.2017 08:16
quelle
0

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.

%Vor%

Rufen Sie dann erneut

an %Vor%

Dies sollte Ihren Fehler lösen.

    
Dulaj Atapattu 05.02.2017 07:56
quelle
0

versuche folgendermaßen:

%Vor%     
Anuj J Pandey 06.02.2017 05:10
quelle