【发布时间】:2019-07-24 11:00:36
【问题描述】:
在我的 Android 项目中,我使用以下 BindingAdapter 将 OnLongClickListener 连接到视图及其对应的视图模型。
@JvmStatic
@BindingAdapter(value = ["onLongClick", "onLongClickText"], requireAll = true)
fun setOnLongClickListener(view: View, viewModel: MyViewModel, text: CharSequence) {
view.setOnLongClickListener {
viewModel.onButton1LongClick(text)
true
}
}
...在 XML 布局中:
app:onLongClick="@{viewModel}"
app:onLongClickText="@{otherView.text}"
这是同一视图模型类中的第二个适配器:
@JvmStatic
@BindingAdapter("onLongClick")
fun setOnLongClickListener(view: View, viewModel: MyViewModel) {
view.setOnLongClickListener {
viewModel.onButton2LongClick()
true
}
}
...在 XML 布局中:
app:onLongClick="@{viewModel}"
我想让BindingAdapter 可重复使用,这样它就可以连接到不同的视图。我想我可以从 XML 传递实际的方法引用。这是我的不工作草稿:
@JvmStatic
@BindingAdapter(value = ["onLongClick", "onLongClickText"], requireAll = true)
fun setOnLongClickListener(view: View, onLongClick: (CharSequence) -> Unit, text: CharSequence) {
view.setOnLongClickListener {
onLongClick.invoke(text)
true
}
}
...在 XML 布局中:
app:onLongClick="@{(view) -> viewModel.onButton1LongClick(???)}"
app:onLongClickText="@{otherView.text}"
【问题讨论】:
标签: android kotlin android-databinding method-reference onlongclicklistener