2017-02-06 4 views
0

Ich habe meinen eigenen Adapter für eine RecyclerView mit Subheadern implementiert. Das Problem ist, dass die Header-Ansichten manchmal nicht an neue Werte aus dem Dataset gebunden sind, weil die Methode onBindViewHolder(...) nicht aufgerufen wird. Ich habe dieses Verhalten über logcat verfolgt: Es fehlt buchstäblich die Positionen für einige der Header. Warum das?Unter welchen Umständen wird onBindViewHolder() in RecyclerView.Adapter nicht aufgerufen?

+1

Wenn Sie null Elemente zurückgeben. – Enzokie

+1

Es ist schwer, irgendetwas ohne Code zu sagen. Sie sollten die Implementierung Ihres Adapters angeben. Und beantworten Sie Ihre Frage: Ich habe nicht angerufen, wenn das Element auf dem Bildschirm sichtbar ist und notifyDataSetChanged nicht aufgerufen wurde. –

+0

Ich habe die Anzahl der Elemente im Datensatz überprüft, die ich zurückgebe - keine Fehler. – Sevastyan

Antwort

0

Den Fehler in meinem Code gefunden! gab keine eindeutigen IDs für die Header zurück. Das hat das Problem behoben.

0

Stellen Sie sicher, dass die Methode getItemCount() 0 nicht zurückgibt, da dies möglicherweise dazu führen kann, dass onBindViewHolder() nicht aufgerufen wird.

+0

Meine Unterordner und tatsächlichen Elemente sind Objekte desselben Typs. Ich lege sie alle in ein Dataset-Array und treffe verbindliche Entscheidungen auf Basis der Werte, die sie haben. 'getItemCount()' gibt simpply 'dataset.getSize() 'zurück. 'Dataset' ist immer NICHT leer. – Sevastyan

Verwandte Themen