按钮onClick在viewholder图案列表视图中获取错误的位置

时间:2017-04-14 09:39:12

标签: android

我在listview的行中有一个按钮。我想检测它的onClick事件和行上的位置(单击哪一行)。

我当前的代码正在运行,但它在错误的行上触发。因此,例如,如果我点击第一行,则会触发最后一行。

这是我的getView:

public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    if(convertView == null)
    {
        convertView = LayoutInflater.from(context)
                .inflate(R.layout.item_cart, parent, false);

        holder = new CartHolder(convertView);
        convertView.setTag(holder);
    }
    else
    {
        holder = (CartHolder) convertView.getTag();
    }

    holder.btnCartAddQty.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //WRONG POSITION
            getItem(position).setQty((Integer.parseInt(getItem(position).getQty())+1)+"");
            holder.txtCartQty.setText(getItem(position).getQty());
        }
    });

我哪里做错了?

更新1

进行一些调试后,似乎检测到位置正确但setText的目标错误

所以罪魁祸首就在这行代码中:

holder.txtCartQty.setText(getItem(position).getQty());

代码始终以holder.txtCartQty

的最后一行为目标

感谢任何帮助,提前致谢

2 个答案:

答案 0 :(得分:2)

声明

 LayoutInflater mInflater;  //Global   

请致电

mInflater = LayoutInflater.from(context); //Contractor 

然后

 if (convertView == null)
 convertView = mInflater.inflate(R.layout.item_cart, null);

答案 1 :(得分:0)

那么,

我只需要致电notifyDataSetChanged

所以我摆脱了这段代码:

holder.txtCartQty.setText(getItem(position).getQty());

并调用notifyDataSetChanged而不是

我的错误是我试图手动更新持有人并忘记了Android适配器最基本的原则之一

感谢大家的帮助