如何在数据绑定中将另一个视图兄弟引用为适配器参数
How to refrence another view sibling as adapter argument in data binding
我的视图中有 2 个编辑文本,并且我正在使用数据绑定。我想要实现的是,每当第一个文本视图有 5 个字符时,焦点就会传递到下一个编辑文本,并且只要该编辑文本也有 5 个字符,焦点就应该从整个视图中移除。
这是我为绑定适配器编写的代码:
@BindingAdapter("setMaxLength", "nextPart")
fun EditText.onTextChange(maxLength: Int, nextPart: EditText) {
filters = arrayOf<InputFilter>(InputFilter.LengthFilter(maxLength))
addOnTextChangeListener {
if (it.length == maxLength) {
clearFocus()
nextPart.requestFocus()
}
}
}
我不知道如何将这 2 个参数传递给我 xml 中的函数。
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/firstPart"
nextPart="alphabet"
setMaxLength="@{5}" />
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/alphabet"
setMaxLength="@{5}" />
此代码存在错误的构建问题:
Cannot find a setter for <androidx.appcompat.widget.AppCompatEditText setMaxLength> that accepts parameter type 'int'
If a binding adapter provides the setter, check that the adapter is annotated correctly and that the parameter type matches.
我不确定我该怎么做,另外 addOnTextChangeListener
是一个文本观察器并且功能已经过测试。
我走的路对吗?任何想法将不胜感激。
尝试这样做
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/firstPart"
nextPart="@{alphabet}"
setMaxLength="@{5}" />
我的视图中有 2 个编辑文本,并且我正在使用数据绑定。我想要实现的是,每当第一个文本视图有 5 个字符时,焦点就会传递到下一个编辑文本,并且只要该编辑文本也有 5 个字符,焦点就应该从整个视图中移除。
这是我为绑定适配器编写的代码:
@BindingAdapter("setMaxLength", "nextPart")
fun EditText.onTextChange(maxLength: Int, nextPart: EditText) {
filters = arrayOf<InputFilter>(InputFilter.LengthFilter(maxLength))
addOnTextChangeListener {
if (it.length == maxLength) {
clearFocus()
nextPart.requestFocus()
}
}
}
我不知道如何将这 2 个参数传递给我 xml 中的函数。
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/firstPart"
nextPart="alphabet"
setMaxLength="@{5}" />
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/alphabet"
setMaxLength="@{5}" />
此代码存在错误的构建问题:
Cannot find a setter for <androidx.appcompat.widget.AppCompatEditText setMaxLength> that accepts parameter type 'int'
If a binding adapter provides the setter, check that the adapter is annotated correctly and that the parameter type matches.
我不确定我该怎么做,另外 addOnTextChangeListener
是一个文本观察器并且功能已经过测试。
我走的路对吗?任何想法将不胜感激。
尝试这样做
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/firstPart"
nextPart="@{alphabet}"
setMaxLength="@{5}" />