Индекс RecyclerView вне связанного исключения - PullRequest
0 голосов
/ 02 апреля 2020
 @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);
    }

Исключение индекса Index of Bound при попытке отобразить карты в моем коде выше. количество карточек (размер 8) при добавлении нижнего колонтитула для отображения кнопки отправки (в виде текста) отображается ошибка

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

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;
    }
0 голосов
/ 02 апреля 2020

Замените ваш getItemCount на это,

@Override
public int getItemCount() {
    if (!modelList.isEmpty())
        return modelList.size();
    return 0;    // return size = 0, if list is empty
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...