我有3个edittext,第一个用于输入价格,第二个用于输入百分比,第三个用于计算它们的输出。例如:第一次输入是100000,第二次输入是30,然后第三次编辑文本将自动填充30000。有可能做到吗?
提前感谢
问候,george
这是可能的。对此,您可以使用editText.addTextChangedListener(观察程序)。
EDIT1
editText1 = (EditText) findViewById(R.id.editText1);
editText2 = (EditText) findViewById(R.id.editText2);
editText3 = (EditText) findViewById(R.id.editText3);
editText2.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String text1 = editText1.getText().toString();
if (text1.length() != 0) {
int input1 = Integer.valueOf(text1);
int input2 = Integer.valueOf(s.toString());
int output = (input1 * input2) / 100;
editText3.setText(output + "");
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
添加TextWatcher
edittext.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) { }
@Override
public void afterTextChanged(Editable s) {
//'calculatedPercentage' is the calculated value
editText3.setText(calculatedPercentage);
}
});
您可以在EditText中使用TextWatcher,并使用onTextChanged方法进行计算。
像这样设置TextWatcher:
EditText editText = (EditText) findViewById(R.id.edt1);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});