Ich habe Recyclerview in meinem Projekt, das einen ViewHolder hat. Für diesen RecyclerView habe ich viele Gegenstände zu besetzen, aber der Einfachheit halber habe ich 100 Artikel hinzugefügt. Aber für diese 100 Elemente wird onCreateViewHolder 100 Elemente aufgerufen, d. H. Für jedes Element, das aufgerufen wird, daher wird für jede Elementansicht eine Infusion erhalten. Wenn ich alle Elemente (1000 oder 2000) verwenden werde, erhalte ich OOM. SO wie kann ich diesen Anruf von onCreateViewHolder für jeden Artikel vermeiden. Brauche wirklich Hilfe !!Viewholder von recyclerview, das für jedes Einzelteil angerufen wird
public static final int HEADER = Integer.MIN_VALUE;
public static final int FOOTER = Integer.MIN_VALUE + 1;
public static final int ADAPTER_OFFSET = 2;
@Override
public int getItemViewType(int position) {
if (position == 0 && useHeader()) {
return HEADER;
}
if (useHeader() && position > getBasicItemCount() && useFooter())
return FOOTER;
else if (!useHeader() && position >= getBasicItemCount() && useFooter())
return FOOTER;
int basicItemType = getBasicItemType(position - (useHeader() ? 1 : 0));
if (basicItemType >= Integer.MAX_VALUE - ADAPTER_OFFSET) {
new IllegalStateException(
"");
}
return basicItemType + ADAPTER_OFFSET;
}
@Override
public int getBasicItemType(int position) {
return position;
}
poste deinen Adater. Haben Sie 'getItemViewType' überschrieben? – Blackbelt
@Blackbelt, Danke Mann, aber mein Adapter kann ich hier nicht posten. Das tut mir leid. Aber es ist einfach einfacher Adapter. Ich weiß nicht, was ich falsch mache. Bitte, wenn Sie helfen können, ohne den Adapter zu sehen –
@Blackbelt ja, ich habe getItemViewType überschrieben. –