Ich arbeite an einem Modul, das Warenkorb füllt. Ich benutzte ListView
und erweiterte BaseAdapter
, um die Einkaufswagenelemente zu füllen. Mit jedem der Artikel in ListView
, habe ich zwei Tasten (inc und dec) eingebettet, um die Menge des Artikels im Warenkorb zu erhöhen oder zu verringern.Android - Benachbarte Schaltflächen in der Listenansicht klicken automatisch
ListView
wird korrekt aktualisiert, aber die Taste zum Erhöhen/Verringern der Geschwindigkeit beim schnellen Klicken/Antippen zeigt abruptes Verhalten.
Wenn ich schnell auf eine der Schaltflächen inc oder dec klicke, wird automatisch die entsprechende inc- oder dec-Schaltfläche eines Elements neben dem aktuellen Element in ListView
angeklickt (zusammen mit dem aktuellen Element btn).
Mit anderen Worten, wenn ich schnell auf inc btn ith Artikel in ListView
tippen, wird inc btn von i + 1 th Artikel in ListView
automatisch angeklickt (zusammen mit inc btn ith Artikel).
@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;
}
Schnittstelle für Rückruf
public interface CartQntSpinnerListenerCallBack {
void changeQuantityOfSelectedItemInCart(String iId, char changeType);
}
Versuchen Debugging, nicht auf dieses seltsame Verhalten herauszufinden.
Sie betonen den Begriff "schnelles Tippen". Also, wenn Sie die Tasten langsam oder nur einmal drücken, wird der angrenzende Gegenstand nicht angeklickt? – Androidicus
Hat das "baseItem" eine feste Breite? Positionen von Inc/Dec-Schaltflächen können sich nach changeQuantityOfSelectedItemInCart() ändern und es verursacht abruptes Verhalten .. Ich denke. (Oder tippen Sie beim Ändern der Layouts) – Toris
Fügen Sie den Code für 'qntSpinnerCb' und was auch immer es berührt. Die 'OnClickListener()' Instanzen scheinen vernünftig zu sein. –