車輪を発明する必要はありません。Androidフレームワークは、そのような目的のためのウィジェットを提供します-NumberPicker。
編集:使用できない、または使用したくない場合はNumberPicker
、次のアイデアがあります:
private class NumberPicker {
private int value=0;
private Button btnIncr;
private Button btnDecr;
private EditText editText;
public NumberPicker(Button btnIncr, Button btnDecr, EditText editText) {
this.btnIncr=btnIncr;
this.btnDecr=btnDecr;
this.editText=editText;
this.btnIncr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
value++;
NumberPicker.this.editText.setText(String.valueOf(value));
}
});
this.btnDecr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
value--;
NumberPicker.this.editText.setText(String.valueOf(value));
}
});
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
value=Integer.parseInt(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
public int getValue() {
return value;
}
}
また、ボタンによって値が変更されたときにTextWatcherがトリガーされることを心配する必要はありません。これで問題が発生することはありません。