押されたボタンに応じて EditText が追加および削除するビューを実装しました。また、TextWatcher を使用して数値を金額形式に変更しました。ここまではすべて正常に動作します。
私の問題は、ユーザーが最初の EditText に入力して追加ボタンを押すときです。次に、ユーザーが 2 番目の EditText に入力すると、入力は最初の EditText 文字列と連結され、2 番目の EditText に表示され、最初の EditText も連結されます。したがって、基本的に両方の EditText が同じ文字列になります。これが私のコードです:
amount = new EditText(this);
RelativeLayout.LayoutParams etLParams = new RelativeLayout.LayoutParams(
400, LayoutParams.WRAP_CONTENT);
etLParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
amount.setInputType(InputType.TYPE_CLASS_NUMBER);
amount.setLayoutParams(etLParams);
amount.setId(AMOUNT);
amount.setSingleLine();
amount.requestFocus();
amount.setCursorVisible(true);
amount.setGravity(Gravity.RIGHT);
amount.addTextChangedListener(new TextWatcher(){
String price="";
private EditText newAmount = new EditText(DutchPayActivity.this);
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(!s.toString().equals(price)){
String cleanString = s.toString().replaceAll("[$,.]", "");
long parsed = Long.parseLong(cleanString);
NumberFormat nf = NumberFormat.getInstance();
price = nf.format(parsed);
s.append(price); //gave me error:java.lang.NumberFormatException: 66666666666666666666666666666666
newAmount.setText(price); //same result as before..
newAmount.setSelection(price.length());
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
});
onTextChanged() を試し、カスタム クラスなどを実装しましたが、うまく動作しません。