app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java
@@ -17,7 +17,6 @@ import java.lang.reflect.ParameterizedType; import java.util.List; import java.util.Map; /** * Created by Administrator on 2021/11/4 0004. @@ -76,18 +75,18 @@ refresh.autoRefresh(); } protected abstract Map requestParams(); protected Object[] requestParams(){return null;}; @Override public void onRefresh(@NonNull RefreshLayout refreshLayout) { page = 0; mViewModel.requestData(page,requestParams()); mViewModel.requestData(mViewModel.request(page,requestParams())); } @Override public void onLoadMore(@NonNull RefreshLayout refreshLayout) { page++; mViewModel.requestData(page,requestParams()); mViewModel.requestData(mViewModel.request(page,requestParams())); } public A getAdapter() { app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java
@@ -17,7 +17,6 @@ import java.lang.reflect.ParameterizedType; import java.util.List; import java.util.Map; /** * 分页fragment 封装 @@ -76,18 +75,22 @@ refresh.autoRefresh(); } protected abstract Map requestParams(); /** * 参数 * @return */ protected Object[] requestParams(){return null;}; @Override public void onRefresh(@NonNull RefreshLayout refreshLayout) { page = 0; mViewModel.requestData(page,requestParams()); mViewModel.requestData(mViewModel.request(page,requestParams())); } @Override public void onLoadMore(@NonNull RefreshLayout refreshLayout) { page++; mViewModel.requestData(page,requestParams()); mViewModel.requestData(mViewModel.request(page,requestParams())); } public A getAdapter() { app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java
@@ -2,17 +2,14 @@ import androidx.lifecycle.MutableLiveData; import com.google.gson.Gson; import com.runt.open.mvvm.data.HttpApiResult; import com.runt.open.mvvm.data.PageResult; import com.runt.open.mvvm.retrofit.observable.HttpObserver; import org.json.JSONObject; import java.lang.reflect.ParameterizedType; import java.util.ArrayList; import java.util.List; import java.util.Map; import io.reactivex.Observable; /** * 分页 @@ -21,47 +18,45 @@ public abstract class LoadPageViewModel<D> extends BaseViewModel { public final int SIZE = 10; private MutableLiveData<List<D>> liveData = new MutableLiveData<>(); private MutableLiveData<ArrayList<D>> liveData = new MutableLiveData<>(); private MutableLiveData liveFailed = new MutableLiveData(); /** * 请求地址 * @param page 页数 * @param objects 参数 * @return */ protected abstract String requestUrl(); public abstract Observable<HttpApiResult<PageResult<D>>> request(int page,Object... objects); /** * 数据请求 * @param page 页数 * @param param 请求参数 */ public void requestData(int page,Map param){ public void requestData(Observable<HttpApiResult<PageResult<D>>> observable){ final ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass(); Class<D> entityClass = (Class<D>) type.getActualTypeArguments()[0]; httpObserverOn( commonApi.getPageData(requestUrl(), page, SIZE, param), new HttpObserver<PageResult>() { @Override protected void onSuccess(PageResult data) { //数据转换 List<D> list = new ArrayList<>(); for(Object map : data.rows){ list.add(new Gson().fromJson(new JSONObject((Map) map).toString(),entityClass)); } liveData.postValue(list); } @Override protected void onFailed(HttpApiResult httpResult) { mActivity.showToast(httpResult.msg); liveFailed.postValue(1); } }); httpObserverOn( observable, new PageHttpObserver()); } public MutableLiveData<List<D>> getLiveData(){ public MutableLiveData<ArrayList<D>> getLiveData(){ return liveData; } public MutableLiveData getLiveFailed() { return liveFailed; } public class PageHttpObserver extends HttpObserver<PageResult<D>> { @Override protected void onSuccess(PageResult<D> data) { liveData.postValue(data.rows); } @Override protected void onFailed(HttpApiResult httpResult) { mActivity.showToast(httpResult.msg); liveFailed.postValue(1); } } } app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java
@@ -4,6 +4,7 @@ import com.runt.open.mvvm.data.ApkUpGradeResult; import com.runt.open.mvvm.data.HttpApiResult; import com.runt.open.mvvm.data.PageResult; import com.runt.open.mvvm.ui.main.home.Message; import java.util.Map; @@ -76,4 +77,12 @@ Call<ResponseBody> updateHead(@Part MultipartBody.Part file); /** * 获取咨询列表 * @param pageNum 页数 * @param pageSize 每页数量 * @return */ @GET("getMsgList") Observable<HttpApiResult<PageResult<Message>>> getMsgList(@Query("page") int pageNum, @Query("size") int pageSize); } app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeFragment.java
@@ -3,15 +3,7 @@ import com.runt.open.mvvm.base.fragments.LoadPageFragment; import com.runt.open.mvvm.databinding.RefreshRecyclerBinding; import java.util.HashMap; import java.util.Map; public class HomeFragment extends LoadPageFragment<RefreshRecyclerBinding,HomeViewModel,MsgAdapter,Message> { @Override protected Map requestParams() { return new HashMap(); } } app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeViewModel.java
@@ -1,11 +1,15 @@ package com.runt.open.mvvm.ui.main.home; import com.runt.open.mvvm.base.model.LoadPageViewModel; import com.runt.open.mvvm.data.HttpApiResult; import com.runt.open.mvvm.data.PageResult; import io.reactivex.Observable; public class HomeViewModel extends LoadPageViewModel<Message> { @Override protected String requestUrl() { return "getMsgList"; public Observable<HttpApiResult<PageResult<Message>>> request(int page, Object... objects) { return commonApi.getMsgList(page,SIZE); } }