【发布时间】:2017-07-14 12:53:04
【问题描述】:
我正在开发一个单位转换器应用程序。它从 EditText 获取值并将其与字符串数组中的值相乘,然后再次存储在另一个数组中。然后在 ListView 中显示。但是 EditText textwatcher 工作缓慢。为什么?
etarea.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) {
if (etarea.getText().length() > 0){
double b = Double.parseDouble(etarea.getText().toString());
for(int i = 0; i <= valueSpinner.length -1; i++){
double a = Double.parseDouble(valueSpinner[i].toString());
double c = b*a;
DecimalFormat df = new DecimalFormat(decimal);
valueet[i] = df.format(c);
}
viewHolder.tvvalue.setText(valueet[i]);
tvareavalue.setText(valueet[posonclick]);
}else{
viewHolder.tvvalue.setText("Enter Value");
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
【问题讨论】:
-
我的建议是使用
Handler和Runnable。将所有逻辑移至另一个方法,并像this 一样实现它。好的做法是等到用户完成输入。
标签: java android listview textwatcher