Jas*_*son 6 android textwatcher
所以我一直在尝试实现Android的TextWatcher并遇到一些问题,TextChangedListener被多次调用或进入无限循环,因为我想将EditText小部件中的文本转换为货币格式化的字符串.
我解决这个问题的方法是创建我自己的自定义TextWatcher然后在afterTextChanged事件中执行类似下面的操作
public class CurrencyTextWatcher implements TextWatcher {
private EditText et;
public CurrencyTextWatcher(EditText editText) {
et = editText;
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void afterTextChanged(Editable s) {
et.removeTextChangedListener(this);
et.setText(myCurrencyString);
et.addTextChangedListener(this);
}
}Run Code Online (Sandbox Code Playgroud)
所以我的问题是,有更好的方法吗?我希望有一个EditText Widget来保存编辑所在的位置以及生成的格式化字符串.
实际上还有其他任何问题,有关删除然后添加像这样的TextChangedListener?
提前致谢
每次你更新(例如调用 set text)你的 editText 时,afterTextChanged 都会被调用,所以我认为你应该避免每次在 afterTextChanged 中调用 setText 并且只在某些事情真正发生变化时调用它。
像这样
if ( !myCurrencyString.equals(et.getText()))
{
et.setText(myCurrencyString);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6644 次 |
| 最近记录: |