我如何正确addTextChangeListener在Android的XML
问题描述:
一直试图做同样的位置: https://gist.github.com/susemi99/a45ca534cc109271f34e6c992f69f048我如何正确addTextChangeListener在Android的XML
所以我有我的EditText在XML:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="test.edu.MyViewModel"/>
<variable type="MyViewModel" name="viewModel"/>
</data>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
(...)
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:addTextChangeListener="@{viewModel.myTextWatcher}"/>
(...)
而且我有TextWatcher在MyViewModel:
public class MyViewModel extends BaseObservable {
public TextWatcher myTextWatcher = 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) {}
@Override
public void afterTextChanged(Editable editable) {}
};
}
我认为,我已经做到了同中提到的链接,但是当我尝试编译,我得到:
无法在android.widget.EditText上为参数类型为android.text.TextWatcher的属性'app:addTextChangeListener'找到setter。
您能否给我一些关于这里有什么问题的提示?我认为我提到的代码是编译的,但我不是100%确定的。
答
我终于想通了这一点,写它的...这只是一个错字。而不是addText 更改听众我有addText 更改听众和说实话的错误消息是不是很有帮助。现在,当我知道解决方案时,它很明显,但之前我正在检查“app”命名空间,一些@Bind注释,gradle选项以及类似的东西。也许这只是我,但我认为这将是一个更容易与错误,如:
android.widget.EditText不具备的功能addTextChangeListener
答
你可以试试这样:
EditText editText =(EditText)findViewById(R.id.editText1);
editText.addTextChangeListener(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) {}
@Override
public void afterTextChanged(Editable editable) {}
};
而是在xml
文件
,但我知道,因为我使用MVVM,我想以避免ViewModel中的findViewById。根据Google的说法:“ViewModel的唯一责任是管理用户界面的数据,它永远不应该访问你的视图层次结构(...)” – LLL