android - 如何将单个 TextWatcher 用于多个 EditText?

标签 android textwatcher

我的 View 布局中有三个 EditText 小部件。有没有办法为所有三个 EditTexts 使用单个 TextWatcher

最佳答案

我刚遇到这个问题。我通过创建一个以 View 作为参数的 TextWatcher 内部类实现来解决它。然后,在方法实现中,只需打开 View 即可查看 Editable 来自哪一个

声明:

private class GenericTextWatcher implements TextWatcher{

    private View view;
    private GenericTextWatcher(View view) {
        this.view = view;
    }

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}

    public void afterTextChanged(Editable editable) {
        String text = editable.toString();
        switch(view.getId()){
            case R.id.name:
                model.setName(text);
                break;
            case R.id.email:
                model.setEmail(text);
                break;
            case R.id.phone:
                model.setPhone(text);
                break;
        }
    }
}

用法:

name = (EditText) findViewById(R.id.name);
name.setText(model.getName());
name.addTextChangedListener(new GenericTextWatcher(name));

email = (EditText) findViewById(R.id.email);
email.setText(model.getEmail());
email.addTextChangedListener(new GenericTextWatcher(email));

phone = (EditText) findViewById(R.id.phone);
phone.setText(model.getPhone());
phone.addTextChangedListener(new GenericTextWatcher(phone));

关于android - 如何将单个 TextWatcher 用于多个 EditText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702771/

相关文章:

android - 错误从服务启动 AlertDialog.Builder

android - 如何将数据从一个应用程序传输到android中的另一个应用程序

android - 如何在 textView 更改文本时为 FadeOut 和 FadeIn 设置动画

android - Textwatcher 不在 KitKat 上将数字作为 inputType

java - 当 EditText A 有字母时显示 EditText B

java - 评分栏,如何获得星数?

java - Dagger 2 场注入(inject)在 Android 中不起作用

来自类的 Android Intent With On Receive

java - 如何修复 Android 中无法解析方法 'setContentView'

android - 对于输入类型为 textWebPassword 的 EditText,TextWatcher 的 onTextChanged 方法中的计数参数无法正常工作