私のプロジェクトでは、ViewHolderが1つあります。このRecyclerViewでは、私は多くのアイテムを設定していますが、簡単にするために100個のアイテムを追加しました。しかし、これらの100個のアイテムについては、onCreateViewHolderは、呼び出されているアイテムごとに100アイテム、つまりアイテムビューごとに呼び出されています。私はすべての項目を使用する場合(1000または2000かもしれない)、私はOOMを取得しています。だから、どのように私はonCreateViewHolderの各項目の呼び出しを避けることができます。本当に助けが必要です!!recyclerviewのビューアが各項目に対して呼び出されています
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;
}
あなたのadaterを投稿してください。 'getItemViewType'をオーバーライドしましたか? – Blackbelt
@Blackbelt、ありがとう、しかし、私のアダプターはここに投稿できません。そのために残念。しかし、それはまっすぐ前方シンプルなアダプターです。私は何が間違っているのか分からない。あなたがアダプタを見るのを助けることができるならば、 –
@Blackbeltはい、私はgetItemViewTypeをオーバーライドしました。 –