Я разработал базу приложений в библиотеке привязки данных Android: https://developer.android.com/topic/libraries/data-binding/index.html
class SignInViewModel extends BaseObservable { @Bindable public String getLogin() { return login; } @Bindable public String getPassword() { return password; } }
И теперь я хочу использовать ViewModelProviders из новой библиотеки: https://developer.android.com/topic/libraries/architecture/guide.html
SignInViewModel signInViewModel = ViewModelProviders.of(this).get(SignInViewModel.class);
Как это сочетается? Есть идеи? Или должны быть объединены эти две библиотеки?
редактировать
Я перехожу к:
class SignInViewModel extends ViewModel { public ObservableField<String> login = new ObservableField<>(""); public ObservableField<String> password = new ObservableField<>(""); }
И теперь компилируется, но вопрос в том, что это правильный путь?
IMO вы не должны смешивать пользовательские модели Observable
и подклассы ViewModel
в том же проекте. LiveData
предназначен для использования в качестве наблюдаемого держателя данных здесь. Вы можете сохранить библиотеку привязки данных для обновления пользовательского интерфейса.
Вы должны посмотреть пример кода Google на GitHub: https://github.com/googlesamples/android-architecture-components/tree/master/GithubBrowserSample . Они используют библиотеку привязки данных и компоненты архитектуры в одном проекте, но библиотека привязки данных используется только для обновления пользовательского интерфейса. Не хранить данные.
Это известная несовместимость. Вы не можете одновременно расширять BaseObservable
и AndroidViewModel
, поэтому вы не можете использовать @Bindable
что делает невозможным двустороннее связывание данных.
Это будет исправлено до финальных компонентов.