gpt4 book ai didi

android - 删除 TextChangedListener 然后重新添加它

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:13:12 25 4
gpt4 key购买 nike

所以我一直在尝试为 Android 实现 TextWatcher 并遇到了一些问题,因为我想将 EditText 小部件中的文本转换为货币格式的字符串,多次调用 TextChangedListener 或进入无限循环.

我为解决此问题所做的工作是创建我自己的自定义 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);
}
}

所以我的问题是,是否有更好的方法来做到这一点?我想要一个 EditText 小部件来保存编辑的位置和生成的格式化字符串。

还有像这样删除然后添加 TextChangedListener 实际上还有其他问题吗?

提前致谢

最佳答案

每次您将更新(例如通过调用 set text)您的 editText 时,afterTextChanged 将被调用,所以我认为您应该避免在每次进入 afterTextChanged 时调用 setText,并且只在某些事情真正发生变化时才调用它。

像这样

if ( !myCurrencyString.equals(et.getText()))
{
et.setText(myCurrencyString);
}

关于android - 删除 TextChangedListener 然后重新添加它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6729242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com