私は2つのボタン、1つのテキストビューと1つの編集テキストを備えたリストビューを持っています。テキストビューには製品の名前が表示され、2つのボタン(-と+)は編集テキストにある数量を増減します。
最後の 3 行 (4 つのうち) ですべてが正常に機能しており、リストの位置、製品の名前、数量、価格、必要なものがすべて表示されます。しかし、最初の行のボタンのいずれかを押すとすぐに、9 ラップのループになります..私のトーストは、最初の行の 1 つに固執する量を除いて、適切な情報を含む各トーストで新しい位置を示しています。
これは、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 つのボタン リスターナーがあります。
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");
}
}
});
最後に、同じ方法で、この問題を引き起こしている私の 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 に切り替えようとしましたが、役に立ちませんでした。
あなたの助けは大歓迎です;)
よろしく、
セブ