Как преобразовать свойство подсказки в наблюдаемый элемент в ViewModel - PullRequest
0 голосов
/ 03 января 2019

Я учусь, как разрабатывать, используя MVVM.Я создал небольшой пример и хотел бы наблюдать за изменениями, произошедшими со свойством подсказки, чтобы при каждом изменении подсказки вызывался соответствующий обратный вызов в классе VM «ViewModel».

в соответствии с приведенным ниже кодом, когда я добавляю привязку к свойству подсказки, я получаю опубликованную ниже ошибку.

Пожалуйста, дайте мне знать, как преобразовать свойство подсказки в наблюдаемое, чтобы я мог наблюдать любые изменения, произошедшие с подсказкойтекст редактирования.

xml

        android:id="@+id/actMain_LoginViewModel1_et_userId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@{(chars)->LoginViewModel1.onHintChanged(chars)}"
        android:afterTextChanged="@{(editable)->LoginViewModel1.onAfterUserIdChanged(editable)}"

ошибка

Found data binding errors.
****/ data binding error ****msg:Cannot find the proper callback class for android:hint. Tried java.lang.CharSequence but it has 4 abstract methods, should have 1 abstract methods.
file:C:\AndroidProjects\DesignPattern\MVVM_02\app\src\main\res\layout\act_main.xml
loc:22:28 - 22:72
****\ data binding error ****

1 Ответ

0 голосов
/ 04 января 2019

Я думаю, что нашел ответ на свой вопрос. setHint не является ни анонимным классом, ни интерфейсом, в отличие от TextChanged. Следовательно, привязка к нему должна быть обратным вызовом, который возвращает значение. Я изменил подпись onHintChanged так, как показано ниже.

ответ

    public String onHintChanged() {
    Log.d(TAG, "onHintChanged chars: ");
    return "hint changed";
    }

    android:id="@+id/actMain_LoginViewModel1_et_userId"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@{LoginViewModel1.onHintChanged()}"

android:afterTextChanged="@{(editable)->LoginViewModel1.onAfterUserIdChanged(editable)}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...