в моей простой части приложения я хочу использовать BindingAdapter
для настройки текста редактирования как
- обнаружить, что текст редактирования пуст
- обнаружить, что текст редактирования имеет значение по умолчанию
в моем коде я могу использовать простой способ привязки данных, но это не реализация с BindingAdapter
, потому что я могу это сделать, и у меня есть большая проблема в том, что мой код не может обнаружить значение по умолчанию editText и когда яполучить текстовое значение редактирования. Я получаю нулевое значение
, добавляя значение по умолчанию в Activity:
binding.instagramPageName.setText("1234");
binding.instagramPagePassword.setText("123456");
ViewModel:
public class LoginViewModel extends ViewModel {
private InstagramAccount instagramAccount;
private LoginResultCallback loginResultCallback;
public ObservableField<String> text = new ObservableField<>();
public LoginViewModel(LoginResultCallback callback) {
instagramAccount = new InstagramAccount();
loginResultCallback = callback;
}
public TextWatcher getUserAccountPageName() {
return 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 s) {
instagramAccount.setUserPage(s.toString());
}
};
}
public TextWatcher getUserPagePassword() {
return 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 s) {
instagramAccount.setUserPassword(s.toString());
}
};
}
public void onLoginClicked(View view) {
if (instagramAccount.isValidate()) {
loginResultCallback.onSuccessValidation();
getResult();
} else {
loginResultCallback.onErrorValidation();
}
}
}
, а затем мой макет
<EditText
android:id="@+id/instagram_page_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:addTextChangedListener="@{viewModel.getUserAccountPageName}"
/>