简体   繁体   English

RecyclerView 索引越界异常

[英]RecyclerView Index out of bound exception

 @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 exception when trying to display the cards in my above code.尝试在上面的代码中显示卡片时,获取索引超出范围异常。 number of cards(Size 8) when adding footer to display submit button(which is text view) error is displayed添加页脚以显示提交按钮(即文本视图)时的卡片数量(大小 8)显示错误

getItemView method's position param starts from 0 so no need to increase size by 1. 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;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM