如何在recyclerView中的所需位置设置textView

时间:2015-12-07 13:38:31

标签: android textview android-recyclerview

我有一个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();
            }
        }
    });

2 个答案:

答案 0 :(得分:0)

不要在onBindViewHolder()中设置OnClickListener()。而是在ViewHolder类本身中执行此操作。主要是RecyclerView重新使用持有者对象来表示变得可见的新数据集。因此,你点击的监听器可能属于某个其他视图持有者,因此它会出现在那里。

快速阅读thisthis。这些与您无关,但它有信息来简化回收概念,因此您可以轻松修复您的东西。

答案 1 :(得分:0)

所以我一直认为recyclerviews是显示我的数据的前端。如果您想对实际数据本身进行更改并确保它反映在recyclerview中,您需要确保在data个对象的arraylist中进行更改。

您需要在data对象中添加一个字段并将其命名为counter。然后,一旦用户单击onClickListener,您必须递增计数器。

myholder.item_totalquantity_text.setText(data.get(position).setCounter(data.get(position).getCounter())+1);