我有一个recyclerView,其中我有一个显示在LinearLayout中的项目列表。每个列表中都有一个“增加”按钮,它会将数量增加“1”。但是当我单击第一个列表上的按钮时项目增加数字。增量值显示在recyclerView的最后一个列表项目中,而不是在我点击的所需位置。任何人都可以帮我找到解决方案吗?
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
myholder = holder;
holder.item_name_text.setText(data.get(position).getName());
holder.item_price_text.setText(data.get(position).getPrice().toString());
holder.item_quantity_text.setText("500");
//Adding item to the cart
holder.add_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(totalItem>=0 && totalItem<10){
totalItem++;
myholder.item_totalquantity_text.setText(String.valueOf(totalItem));
}else{
Toast.makeText(myholder.itemView.getContext(),"Cannot add more item",Toast.LENGTH_SHORT).show();
}
}
});
答案 0 :(得分:0)
不要在onBindViewHolder()中设置OnClickListener()。而是在ViewHolder类本身中执行此操作。主要是RecyclerView重新使用持有者对象来表示变得可见的新数据集。因此,你点击的监听器可能属于某个其他视图持有者,因此它会出现在那里。
答案 1 :(得分:0)
所以我一直认为recyclerviews是显示我的数据的前端。如果您想对实际数据本身进行更改并确保它反映在recyclerview中,您需要确保在data
个对象的arraylist中进行更改。
您需要在data
对象中添加一个字段并将其命名为counter
。然后,一旦用户单击onClickListener,您必须递增计数器。
myholder.item_totalquantity_text.setText(data.get(position).setCounter(data.get(position).getCounter())+1);