Ich habe eine Liste, wo ich für jedes nächste Element 5 verschiedene Ansicht aufblasen und diese Ansicht ist Banner für Werbung. Aber jetzt bekomme ich einen Fehler in der Methode getItemViewType()
. Dies ist, wie mein Code aussieht:IndexOutOfBoundsException auf RecyclerView-Adapter mit mehreren Ansichtstypen
@Override
public int getItemViewType(int position) {
if (jokes.get(position) != null) {
// Here i should catch every 5 element in jokes array and change view
if (position % 5 == 0 && position != 0) {
return VIEW_TYPE_BANNER;
}
return VIEW_TYPE_ITEM;
} else {
return VIEW_TYPE_LOADING;
}
}
Und das ist Methode getItemCount()
:
@Override
public int getItemCount() {
return jokes == null ? 0 : jokes.size() + jokes.size()/5;
}
Hinweis: Ich Abrufen 18 Artikel von API.
EDIT:
Ein Punkt ist hier am unteren Rand der Liste fehlt.
Wenn die Größe 18 ist, dann sind gültige Indizes 0-17 inklusive. 'position
Woher rufen Sie die getItemViewType() -Methode auf? Bitte fügen Sie den Aufruf – PeaceIsPearl
hinzu 'getItemCount()' macht keinen Sinn und ist völlig irrelevant. – shmosel