0
我正在使用單位轉換器應用程序。它從EditText獲取值並將其與來自字符串數組的值相乘,並再次存儲在另一個數組中。然後在ListView中顯示它。但是EditText textwatcher運行緩慢。爲什麼?帶有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]一樣實現它(https://stackoverflow.com/a/14660979/8198240)。好的做法是等到用戶完成打字。 – arcticwhite