类似以下代码
<data>
<variable
name="listener"
type="android.view.View.OnClickListener" />
</data>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android: text="@ {user.firstName}"
android:onClick="@{listener::onClick}"/>
我想从XML调用editorAction,可以通过XML执行它吗?。
1.创建接口
interface CustomOnEditorActionListener {
fun onEditorAction()
}
2.绑定适配器
@BindingAdapter("app:customOnEditorActionListener")
fun setCustomOnEditorActionListener(view: TextView, listener: CustomOnEditorActionListener?) {
if (listener == null) {
view.setOnEditorActionListener(null)
} else {
view.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
listener.onEditorAction()
return false
}
})
}
}
3.在XML中。viewModel实现的接口CustomOnEditorActionListener
...
<variable
name="viewModel"
type="nl.login.LoginViewModel" />
...
<EditText
android:id="@+id/password_edit"
app:customOnEditorActionListener="@{viewModel}"
...