【发布时间】:2020-01-24 05:07:08
【问题描述】:
我正在尝试使用数据绑定在我的视图模型中处理 imeOption actionDone。
还有一些其他帖子没有给出我正在寻找的解决方案。我想用 BindingAdapter 在 XML 中设置它来处理 actionDone 事件。在其他帖子的解决方案之后,我不断收到不同的数据绑定错误。
我真的希望我能找到一个文档,其中概述了所有数据绑定 XML 语法以及为什么工作会导致很多文档(包括官方 Android 文档)混合使用 lambdas 不/传递参数而没有解释。在 gradle build 中稍微改变一下和绑定错误。
xml
<EditText
android:id="@+id/passwordEdit"
android:layout_width="0dp"
android:layout_height="42dp"
android:ems="10"
android:text="@={mainViewModel.password}"
android:inputType="textPassword"
android:imeOptions="actionDone"
app:onEditorActionDone="@{(view) -> mainViewModel.onEditorActionDone(view)}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passwordTitle" />
视图模型
@BindingAdapter({"onEditorActionDone"})
public void onEditorActionDone(EditText view) {
AppLog.d(TAG, "-> onEditorActionDone()");
view.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//do login
}
//do nothing
});
}
我试过了
app:onEditorActionDone="@{mainViewModel::onEditorActionDone}"app:onEditorActionDone="@{(view) -> mainViewModel.onEditorActionDone()}"
app:onEditorActionDone="@{mainViewModel.onEditorActionDone}"
【问题讨论】:
-
其实你想做什么?
-
我更新了帖子,很抱歉造成混乱。我想在我的 ViewModel 中处理 imeOptions actionDone。
标签: android android-databinding