Android, использующий BindingAdapter для EditText - PullRequest
0 голосов
/ 21 марта 2019

в моей простой части приложения я хочу использовать BindingAdapter для настройки текста редактирования как

  1. обнаружить, что текст редактирования пуст
  2. обнаружить, что текст редактирования имеет значение по умолчанию

в моем коде я могу использовать простой способ привязки данных, но это не реализация с 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}"
/>
...