我开发了基于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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想使用新库中的ViewModelProviders:https: //developer.android.com/topic/libraries/architecture/guide.html
SignInViewModel signInViewModel = ViewModelProviders.of(this).get(SignInViewModel.class);
Run Code Online (Sandbox Code Playgroud)
它如何结合?任何的想法?或者应该结合这两个库?
编辑
我改为:
class SignInViewModel extends ViewModel {
public ObservableField<String> login = new ObservableField<>("");
public ObservableField<String> password = new ObservableField<>("");
}
Run Code Online (Sandbox Code Playgroud)
现在编译,但问题是:它是正确的方式?
有没有办法强制实现LiveData值的不可空性?默认的Observer实现似乎有@Nullable注释,它强制IDE建议该值可能为null并且应该手动检查:
public interface Observer<T> {
/**
* Called when the data is changed.
* @param t The new data
*/
void onChanged(@Nullable T t);
}
Run Code Online (Sandbox Code Playgroud) 我在我的Android应用程序中使用MVVM,在视图模型我有很多观察员(从数据绑定)一样ObservableBoolean,ObservableField我看了,我可以使用LiveData/MutableLiveData,而不是这个观察家...有什么区别?我可以用LiveData/MutableLiveData?
例如:
代替:
val loading: ObservableBoolean = ObservableBoolean()
Run Code Online (Sandbox Code Playgroud)
经过:
val loading: MutableLiveData<Boolean> = MutableLiveData()
Run Code Online (Sandbox Code Playgroud)