我有ViewModel
class MyViewModel extends BaseViewModel{
public void foo(){
// some code or return some boolean
}
}
查看课程
class MyView extends View{
private MyViewModel myviewmodel;
public void bindTo(MyViewModel viewModel) {
this.viewModel = viewModel;
context = viewModel.getContext();
validateView();
requestLayout();
}
private validateView(){
//some code
}
}
此绑定视图方法与适配器绑定 每当我将validateView调用时,我都想在Myview类中回调,请向我建议如何从Viewmodel方法回调到android中的View。
答案 0 :(得分:0)
如果我输入错误,请纠正我
public interface ViewModelCallback {
void returnCallBack(Boolean mBoolean);
}
class MyView extends View implements ViewModelCallback
@Override
public void returnCallBack(Boolean mBoolean) {
//here you will retrieve callback
// Do Something
}
class MyViewModel {
private ViewModelCallback myViewCallBack;
public void foo() {
Boolean yourReturnValue = false;
myViewCallBack.returnCallBack(yourReturnValue);
}
}
答案 1 :(得分:0)
最佳做法是使用实时数据从ViewModel到您的视图进行通信。
class MyViewModel {
private MutableLiveData<Boolean> state = new MutableLiveData<Boolean>;
public LiveData<Boolean> getState() {
return state;
}
public void foo() {
//bool = value returned of your work
state.setValue(bool);
} }
class Myview extends View {
public void onCreate() {
viewmodel.getState().observe(this, observer); // 'this' is life cycle owner
}
final Observer<Boolean> observer = new Observer<Boolean>() {
@Override
public void onChanged(@Nullable final Boolean state) {
// do your work with returned value
}
}; }
有关更多详细信息,请参见this