我在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)));
}
}
});
答案 0 :(得分:1)
解决方案:
调用set
意味着用新的element
替换position
中已经添加的element
。
但是,在RecyclerView
的{{1}}中会抛出错误,因为onBindHolder()
会填充新数据并且不会替换任何位置。
因此,您无法在onBindViewHolder
中呼叫set
。
例如,如果用户输入onBindViewHolder()
并且qty = 5
仅包含3个元素,则显然它不会替换位置5,因为它尚未被填充。
如果您想增加任何物品的数量,请确保arraylist
不为空。
希望有帮助。