Я пытаюсь обработать imeOption actionDone в моей модели представления, используя привязку данных.
Есть пара других сообщений, которые не дают решения, которое именно то, что я ищу. Я хочу установить это в XML с BindingAdapter для обработки события actionDone. Я продолжаю получать различные ошибки привязки данных после решений других постов.
Я действительно sh Я мог найти do c, в котором описан весь синтаксис привязки данных XML и почему все работает, что вызывает много Документы (включая официальные Android) используют смесь лямбда-выражений без / пропускаемых параметров без объяснения причин. измените это даже немного и ошибки привязки в сборке gradle.
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" />
ViewModel
@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}"