我有一個包含2個按鈕,1個textview和一個edittext的列表視圖,textview顯示產品的名稱,兩個按鈕( - & +)增加或減少編輯文本中的數量。當我點擊列表視圖的第一行時,我的textchanged監聽器正在啓動一個循環?
對於最後3行(4個),一切正常,它顯示了我在列表中的位置,產品名稱,數量,價格,我需要的一切。但只要我從第一排按下任何一個按鈕,它就會進入9圈循環。我的敬酒在每個烤麪包上顯示一個新的位置,並顯示適當的信息,但數量與第一行的數量不同。
這裏是我的自定義適配器的延伸BaseAdapter的getView:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null){
convertView = inflater.inflate(R.layout.one_product, null);
}
final int pos = position;
Button btnProdChoiMinus = (Button)convertView.findViewById(R.id.btnProdChoiMinus);
TextView tvProduit = (TextView)convertView.findViewById(R.id.tvProduct);
Button btnProdChoiPlus = (Button)convertView.findViewById(R.id.btnProdChoiPlus);
final EditText etQuantity = (EditText)convertView.findViewById(R.id.etQuantite);
final Produit p= data.get(position);
btnProdChoiMinus.setText(convertView.getResources().getString(R.string.lblMinus));
tvProduit.setText(p.getNom());
btnProdChoiPlus.setText(convertView.getResources().getString(R.string.lblPlus));
在我有我的2個按鈕的listerners同樣的方法:
btnProdChoiMinus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (etQuantity.getText().toString().length() != 0){
quantite = Integer.parseInt(etQuantity.getText().toString()) - 1;
if (quantite > 0){
etQuantity.setText("" + quantite);
}else{
etQuantity.setText("");
}
}else{
Toast.makeText(context, R.string.lblErrQuantity_fr, Toast.LENGTH_SHORT).show();
}
}
});
btnProdChoiPlus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (etQuantity.getText().toString().length() != 0){
quantite = Integer.parseInt(etQuantity.getText().toString()) + 1;
etQuantity.setText("" + quantite);
}else{
etQuantity.setText("1");
}
}
});
而且finaly仍處於同樣的方法,我引起此問題的textchanged列表程序:
etQuantity.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if (etQuantity.getText().toString().length() != 0){
quantite = Integer.parseInt(etQuantity.getText().toString());
Toast.makeText(context, "Position: " + pos + " Produit: " + p.getNom() + " id: " + p.getId() + " Prix: " + p.getPrix() + " Quantité: " + quantite, Toast.LENGTH_SHORT).show();
//((NewOrderActivity)activity).updateOrderedProducts(p.getId(), p.getNom(), p.getPrix(), quantite);
}
}
});
return convertView;
}
我已經試過切換從afterTextChanged到onTextChanged,但它沒有幫助。
你的幫助是非常讚賞;)
問候,
勒布