我正在开发一个填充购物车的模块.我使用ListView并扩展BaseAdapter来填充购物车项目.对于每个项目ListView,我嵌入了两个按钮(inc和dec)来增加和减少购物车中的商品数量.
ListView 已正确更新,但快速单击/点击时的递增/递减按钮显示突然行为.
每当我快速点击任何inc或dec按钮时,将ListView自动点击当前项目旁边的项目的相应inc或dec按钮(以及当前项目btn).
换句话说,每当我快速点击第i个项目的ListViewinc 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;
}
Run Code Online (Sandbox Code Playgroud)
回调接口
public interface CartQntSpinnerListenerCallBack {
void changeQuantityOfSelectedItemInCart(String iId, char changeType);
}
Run Code Online (Sandbox Code Playgroud)
试过调试,无法弄清楚这种奇怪的行为.
你没有选择正确的CartModel内部onClick,如果你想在里面得到正确的对象,onclick那么你必须将位置标记为按钮
holder.qntInc.setTag(position);
Run Code Online (Sandbox Code Playgroud)
在onClick:
@Override
public void onClick(View view) {
if (qntSpinnerCb != null) {
CartModel cm= mCart.get((Integer)view.getTag);
qntSpinnerCb.changeQuantityOfSelectedItemInCart(cm.getmIid(), INCREASE_QNT);
}
}
Run Code Online (Sandbox Code Playgroud)
遵循相同的qntDec.
Dev*_*aja -1
代码中有问题。
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);
// This should be added in the code
holder.qntSel = (TextView) convertView.findViewById(R.id.sec_txt);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |