android - 如何使用数据绑定从 xml 调用 Edittext onEditorAction
问题描述
像下面的代码
<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
@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}"
...
推荐阅读
- indexing - 由于被 robots.tx 阻止,Mailchimp 登录页面无法在 Google Search Console 上编入索引
- python-3.x - 我找不到如何使用 selenium python 获取文本
- linux - 如何找到所有大于可变时间戳的错误日志?
- swift - 如何让 Swift 委托在 React Native iOS App 中工作
- javascript - 为什么正确读取请求时服务器响应不正确?
- angular - Angular HttpInterceptor - 参数类型不可分配
- c# - 每个线示踪剂
- verilog - 分段错误:使用 yosys 编译时出现 11
- python - 根据 pyspark 中另一个文件的值过滤巨型文件的行
- angular - 带有 httpclient 调用的提供程序在第一次尝试中返回未定义(Ionic 5 / Angular)