RecyclerView索引超出绑定异常


@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof FooterViewHolder) {
FooterViewHolder footerHolder = (FooterViewHolder) holder;
footerHolder.submit.setText("Submit");
footerHolder.submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext, "You clicked at Submit button", Toast.LENGTH_SHORT).show();
}
});
} else if (holder instanceof ItemViewHolder) {
ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
questions q = quests.get(position);
itemViewHolder.title.setText(q.getQuestion());
int otl1 = q.getOption1();
int otl2 = q.getOption2();
int otl3 = q.getOption3();
int otl4 = q.getOption4();
char c2 = (char) otl2;
char c3 = (char) otl3;
char c4 = (char) otl4;
System.out.println("OPTIONN 4 char" + c4 + "OPTION 4 INT" + otl4);
if (c2 == 'O') {
itemViewHolder.opt1.setText(otl1);
itemViewHolder.opt2.setVisibility(View.INVISIBLE);
itemViewHolder.opt3.setVisibility(View.INVISIBLE);
itemViewHolder.opt4.setVisibility(View.INVISIBLE);
} else if (c3 == 'O') {
itemViewHolder.opt1.setText(otl1);
itemViewHolder.opt2.setText(otl2);
itemViewHolder.opt3.setVisibility(View.INVISIBLE);
itemViewHolder.opt4.setVisibility(View.INVISIBLE);
} else if (c4 == 'O') {
itemViewHolder.opt1.setText(otl1);
itemViewHolder.opt2.setText(otl2);
itemViewHolder.opt3.setText(otl3);
itemViewHolder.opt4.setVisibility(View.INVISIBLE);
} else {
itemViewHolder.opt1.setText(otl1);
itemViewHolder.opt2.setText(otl2);
itemViewHolder.opt3.setText(otl3);
itemViewHolder.opt4.setText(otl4);
}
/*   itemViewHolder.itemText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext, "You clicked at item " + position, Toast.LENGTH_SHORT).show();
}
}); */
}
}
@Override
public int getItemViewType(int position) {
int size = quests.size();
if (position == (size+ 1)) {
return TYPE_FOOTER;
}
System.out.println("Position of card-------" + position + "------card");
return TYPE_ITEM;
}
@Override
public int getItemCount() {
int c = (quests.size() + 1);
return (c);
}

当试图在上面的代码中显示卡片时,出现Getting Index out of Bound异常。当添加页脚以显示提交按钮(即文本视图(时,显示错误的卡片数量(大小8(

getItemView方法的position参数从0开始,因此无需将大小增加1。

@Override
public int getItemViewType(int position) {
int size = quests.size();
if (position == size) {
return TYPE_FOOTER;
}
System.out.println("Position of card-------" + position + "------card");
return TYPE_ITEM;
}

最新更新