首页 > 解决方案 > ArrayList set(position,object) 方法 RecyclerView 中的 IndexOutOfBound 异常

问题描述

我在Recyclerview适配器中使用arraylist,并且在按下此按钮后我正在使用增量按钮我已经更新了相同位置的数量,但我正面临着IndexOutOfException帮助我解决这个问题

@Override
public void onBindViewHolder(@NonNull final ItemViewHolder holder, final int position) {
    final ItemsModel model=itemsModelList.get(position);
    confirmItemModel=new ArrayList<ConfirmItemModel>();

    holder.text_name.setText(model.getName());
    holder.text_count.setText(model.getCount());
    holder.btn_inc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int qty=Integer.valueOf((String) holder.txt_qty.getText());

            if(qty==0){
                qty++;
                holder.txt_qty.setText(String.valueOf(qty));
                confirmItemModel.add(new ConfirmItemModel(model.getName(),model.getCount(),String.valueOf(qty)));
            }else if(qty>0){
                qty++;
                holder.txt_qty.setText(String.valueOf(qty));
                confirmItemModel.set(position,new ConfirmItemModel(model.getName(),model.getCount(),String.valueOf(qty)));

            }

        }
    });

标签: javaandroid

解决方案


解决方案:

调用set意味着用新的替换element已经添加的。positionelement

更多信息:ArrayList - 设置方法

但是, inRecyclerViewonBindHolder()抛出错误,因为onBindViewHolder填充了新数据并且不替换任何位置。

因此,您不能调用set.onBindViewHolder()

例如,如果用户输入qty = 5并且arraylist只有 3 个元素,那么显然它不会替换位置 5,因为它还没有填充。

如果您想增加任何物品的数量,请确保position不为空。

希望能帮助到你。


推荐阅读