在我的RecyclerView中,我有3種不同的自定義佈局,一種是頂級故事的標題視圖,必須在位置0處充氣。第二種視圖適用於需要從位置1開始膨脹的普通故事。第三個是特殊佈局用於破碎的故事,並且應在其他位置不是0在RecyclerView中使用自定義佈局的IndexOutOfBoundsException
我設法做到這一點在onBindViewHolder()
方法recyclerView的膨脹:
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ViewHolderHeaderMain) {
ViewHolderHeaderMain viewHolderHeaderMain = (ViewHolderHeaderMain) holder;
viewHolderHeaderMain.getMainHeaderView().setTopStories(this.mTopStory);
} else if (holder instanceof ViewHolderBaisc){
ViewHolderBaisc viewHolderItem = (ViewHolderBaisc) holder;
viewHolderItem.bindStory(this.mStories.get(position -1));
} else if (holder instanceof ViewHolderNew){
ViewHolderNew viewHolderNew = (ViewHolderNew) holder;
viewHolderNew.bindStory(this.mStories.get(position));
}
}
然後視圖類型返回這樣的:
public int getItemViewType(int position) {
if (position != 0) {
if (mStories.get(position).getIsBreaking()){
return ITEM_VIEW_TYPE_CUSTOM;
}
return mStories.get(position) != null ? ITEM_VIEW_TYPE_BASIC : ITEM_VIEW_TYPE_FOOTER;
}
return 0;
}
我的問題是,鑑於ITEM_VIEW_TYPE_BASIC
的最後一個項目沒有顯示
以下是我getItemCount方法
public int getItemCount() {
return (this.mStories != null) ? this.mStories.size() : 0;
}
這裏,如果我做return (this.mStories != null) ? this.mStories.size()+1: 0;
我得到
IndexOutOfBoundsException異常:無效的指數10,大小爲10
缺少你定義哪個持有者隨其中哪個項目類型的部分。 – njzk2
但可能'viewHolderNew.bindStory(this.mStories.get(position));'應該是'position - 1' – njzk2