按钮onClick在视图模式列表视图中获取错误的位置
我在列表视图的行内有一个按钮。我想检测它的onClick事件并在行上的位置(哪一行被点击)。按钮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
的最后一行作为目标
任何帮助表示赞赏,提前
感谢声明
LayoutInflater mInflater; //Global
调用此
mInflater = LayoutInflater.from(context); //Contractor
然后
if (convertView == null)
convertView = mInflater.inflate(R.layout.item_cart, null);
感谢您的帮助。但是与我现在的代码有什么不同? –
我需要研究什么膨胀(R.layout.item_cart,null);没有,但这样做搞砸了我的行项目布局... –
@BlazeTama发生同样的问题? –
好,
我只需要调用notifyDataSetChanged
所以我摆脱这个代码:
holder.txtCartQty.setText(getItem(position).getQty());
,并呼吁notifyDataSetChanged
代替
我的错误是我试图手动更新座并忘记了Android适配器的最基本原理之一
谢谢大家的帮助
马虎的错误。 'notifyDataSetChanged'刷新 –
为什么这是最终的int位置这个 –
你是否将对象返回到getItem(int i)? – Sach
是的,它返回一个对象 –