Tar*_*w45 11 java android mvvm android-databinding
我们公司一直在使用MVP模式开发Android应用程序.使用MVP,我们将所有业务逻辑放在演示者中,然后Activity/Fragment负责在从演示者接收事件回调时查看更新.
现在,我们决定使用Android Databinding尝试MVVM.看来,使用MVVM,我们可以将所有业务逻辑放在ViewModel中(就像MVP中的Presenter一样),并且还可以在一个对象中通知数据模型的任何更改视图.
但是,在我们的脑海中,这提出了一个问题,我们应该由Activity/Fragment处理什么?因为我们采用MVP模式来避免脂肪活动/碎片.我们不希望有苗条活动/片段,然后是胖视图模型.
到目前为止,我们认为我们可以通过Activity/Fragment来处理这些问题
每个更正,评论或建议都是受欢迎的,因为我对MVVM很新,即使它似乎与MVP类似.
谢谢.
还有一点问题
将MVVM与监听器(如MVP)结合起来是否可能并且是一种好的做法?例如
public class MainActivityViewModel extends BaseObservable {
MainActivityViewModelListener listener;
User user;
public void setMainActivityViewModelListener(MainActivityViewModelListener listener) {
this.listener = listener;
}
public void refreshUser(View v) {
// some user update via Internet
notifyPropertyChanged(BR.userAlias);
if (listener != null) {
listener.onUserRefreshed(user);
}
}
@Bindable
public void getUserAlias() {
return user.getAlias();
}
}
public interface MainActivityViewModelListener {
void onUserRefreshed(User user);
}
public class MainActivity implements MainActivityViewModelListener {
MainActivityBinding binding;
@Override
public void onCreate(Bundle savedInstanceState) {
binding = DataBindingUtil.setContentView(R.layout.main_activity);
MainActivityViewModel viewModel = new MainActivityViewModel();
viewModel.setMainActivityViewModelListener(this);
binding.setMainActivityViewModel(viewModel);
}
@Override
public void onUserRefreshed(User user) {
// do some update
}
}
Run Code Online (Sandbox Code Playgroud)
是的,您可以在ViewModel中拥有所有业务逻辑,以下是我个人学习MVVM的一些链接
使用MVVM接近Android
https://github.com/ivacf/archi Android上的MVVM
:您需要了解的内容
您可以在ViewModel中提及所有侦听器以及模型将包含的数据.
ViewModel 改变一些内容并通知绑定框架内容已更改.
模型 - 包含业务和验证逻辑的数据模型
视图 - 在屏幕上定义视图的结构,布局和外观
ViewModel - 在视图和模型之间链接,处理任何视图逻辑