在代码中我会这样做:
myEditText.addTextChangedListener(firstTextWatcher);
myEditText.addTextChangedListener(secondTextWatcher);
在xml中,这有效:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:addTextChangedListener="@{viewModel.firstTextWatcher}"/>
但是这个:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:addTextChangedListener="@{viewModel.firstTextWatcher}"
app:addTextChangedListener="@{viewModel.secondTextWatcher}"/>
结果:
重复属性addTextChangedListener
你知道为什么这是一个问题吗?我正在使用MVVM,所以我想从数据绑定中受益。我知道我可以将这两个TextWatchers合二为一,但是它真的有必要吗?
答案 0 :(得分:-1)
您还想为EditTexts提供一个ID,可以在XML中完成,如下所示:android:id="@+id/box1"
您希望在Java中执行此操作,而不是在XML文件中执行此操作。以下是您需要的所有代码剪辑,但您必须放置它们!您还需要为第二个EditText复制这些,因为这只是一个:
private EditText box1;
final EditText box1 = (EditText) findViewByID(R.id.box1);
box1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(final CharSequence txt,int s, int b, int c) {
}
});
这应该有效。在更改的文字中,int s
,int b
和int c
是我不确定的。我刚刚使用下面的方法输入:https://developer.android.com/reference/android/text/TextWatcher.html