【发布时间】:2015-07-01 18:38:27
【问题描述】:
我正在开发一个填充购物车的模块。我使用ListView 和扩展BaseAdapter 来填充购物车项目。
对于ListView 中的每个商品,我嵌入了两个按钮(inc 和 dec)来增加和减少购物车中商品的数量。
ListView 已正确更新,但快速单击/轻敲上的递增/递减按钮显示突然行为。
每当我快速点击任何 inc 或 dec 按钮时,ListView 中当前项目旁边的项目的相应 inc 或 dec 按钮都会被自动点击(以及当前项目 btn)。
换句话说,每当我快速点击 ListView 中第 i 个项目的 inc btn 时,ListView 中第 i+1 个项目的 inc btn 会被自动点击(以及第 i 个项目的 inc btn)。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_cart, parent, false);
holder = new ViewHolder();
holder.baseItem = (TextView) convertView.findViewById(R.id.qnt_tv);
holder.qntInc = (TextView) convertView.findViewById(R.id.inc_btn);
holder.qntDec = (TextView) convertView.findViewById(R.id.dec_btn);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final CartModel cm = mCart.get(position);
holder.baseItem.setText(cm.getmTitle());
holder.qntSel.setText(String.valueOf(cm.getmQnt()));
holder.qntInc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (qntSpinnerCb != null)
qntSpinnerCb.changeQuantityOfSelectedItemInCart(cm.getmIid(), INCREASE_QNT);
}
});
holder.qntDec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (qntSpinnerCb != null) {
qntSpinnerCb.changeQuantityOfSelectedItemInCart(cm.getmIid(), DECREASE_QNT);
}
}
});
return convertView;
}
回调接口
public interface CartQntSpinnerListenerCallBack {
void changeQuantityOfSelectedItemInCart(String iId, char changeType);
}
尝试调试,无法弄清楚这种奇怪的行为。
【问题讨论】:
-
您强调“快速点击”一词。那么,当您缓慢点击按钮时,还是仅在未点击相邻项目时?
-
“baseItem”是否有固定宽度?在 changeQuantityOfSelectedItemInCart() 之后,Inc/Dec 按钮的位置可能会发生变化,这会导致突然的行为。我猜。 (或在更改布局时点击)
-
添加
qntSpinnerCb的代码以及它所涉及的任何内容。OnClickListener()实例似乎是合理的。 -
你能显示你的xml代码吗?
-
什么是 mCart?如果可能,我要求您发布完整的适配器类。