MVVM模式: MVVM 是Model-View-ViewModel的简写。 它本质上就是MVC 的改进版。 MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。
1、Model 提供数据
model在程序中专门用于提供数据,不管是网络数据获得的数据,还是数据库获得的数据,统统写在model里。model层独立性相当强,它只用来提供数据,而不管数据是用来做什么
代码展示:
public class FoodModel {
private Api mapi;
public FoodModel() {
mapi = Retrofitmanager.getInstance().getMretrofit().create(Api.class);
}
public Observable<FiayEntity> getFoodData(int currentPage, int pageSize) {
return mapi.getFoodData(currentPage, pageSize);
}
}
2.view:视图元素和视图元素初始化:
view在Android中 代指的就是我们常见的文件布局和activity 中的元素初始化部分。 总之,所有的一切我们在Android 中可以看到的东西都是view ,在view层中,我们只对ui做初始化
代码展示:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data></data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MVVM.view.FoodActivity">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rv">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
</layout>
3.ViewModel 操作业务数据 并且将数据呈现在view上:
ViewModel根据业务需要,从Model层调取相关数据,然后更新view层相关的元素。
代码展示:
public class FoodViewModel extends ViewModel {
public MutableLiveData<FiayEntity> liveData= new MutableLiveData<>();
private FoodModel foodModel;
public FoodViewModel() {
foodModel = new FoodModel();
}
public void getFood(int currentPage, int pageSize){
foodModel.getFoodData(currentPage,pageSize)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<FiayEntity>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(FiayEntity fiayEntity) {
liveData.postValue(fiayEntity);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}