J'ai essayé de faire la même chose comme ici: https://gist.github.com/susemi99/a45ca534cc109271f34e6c992f69f048Comment correctement addTextChangeListener dans Android xml
donc j'avoir mon EditText en xml:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="test.edu.MyViewModel"/>
<variable type="MyViewModel" name="viewModel"/>
</data>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
(...)
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:addTextChangeListener="@{viewModel.myTextWatcher}"/>
(...)
Et je TextWatcher dans MyViewModel:
public class MyViewModel extends BaseObservable {
public TextWatcher myTextWatcher = new TextWatcher(){
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable editable) {}
};
}
Je pense que je l'ai fait la même chose que dans le lien mentionné, mais lorsque je tente de compiler je reçois:
Impossible de trouver le sélecteur pour l'attribut 'app: addTextChangeListener' avec le type de paramètre android.text.TextWatcher sur android.widget.EditText.
Pourriez-vous me donner quelques indices sur ce qui ne va pas ici? J'ai supposé que le code dont j'ai parlé compile mais je ne suis pas sûr à 100%.
Je sais, mais depuis que je suis en utilisant MVVM je voulais pour éviter findViewById dans ViewModel. Selon Google: "La seule responsabilité de ViewModel est de gérer les données de l'interface utilisateur. Il ne devrait jamais accéder à la hiérarchie de vos vues (...)" – LLL