app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java
@@ -16,7 +16,9 @@ import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener; import java.lang.reflect.ParameterizedType; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by Administrator on 2021/11/4 0004. @@ -81,18 +83,20 @@ * 参数 * @return */ protected Object[] requestParams(){return null;}; protected Map requestParams() { return new HashMap(); } @Override public void onRefresh(@NonNull RefreshLayout refreshLayout) { page = 0; mViewModel.requestData(mViewModel.request(page,requestParams())); mViewModel.requestData(page,requestParams()); } @Override public void onLoadMore(@NonNull RefreshLayout refreshLayout) { page++; mViewModel.requestData(mViewModel.request(page,requestParams())); mViewModel.requestData(page,requestParams()); } app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java
@@ -16,7 +16,9 @@ import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener; import java.lang.reflect.ParameterizedType; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 分页fragment 封装 @@ -79,18 +81,20 @@ * 参数 * @return */ protected Object[] requestParams(){return null;}; protected Map requestParams() { return new HashMap(); } @Override public void onRefresh(@NonNull RefreshLayout refreshLayout) { page = 0; mViewModel.requestData(mViewModel.request(page,requestParams())); mViewModel.requestData(page,requestParams()); } @Override public void onLoadMore(@NonNull RefreshLayout refreshLayout) { page++; mViewModel.requestData(mViewModel.request(page,requestParams())); mViewModel.requestData(page,requestParams()); } app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java
@@ -1,14 +1,15 @@ package com.runt.open.mvvm.base.model; 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 io.reactivex.Observable; import java.util.Map; /** * 分页 @@ -22,19 +23,39 @@ /** * 请求地址 * @param page 页数 * @param objects 参数 * @return */ public abstract Observable<HttpApiResult<PageResult<D>>> request(int page,Object... objects); protected abstract String requestUrl(); /** * 数据请求 */ public void requestData(Observable<HttpApiResult<PageResult<D>>> observable){ httpObserverOn( observable, new PageHttpObserver()); /** * 数据请求 * @param page 页数 * @param param 请求参数 */ public void requestData(int page, Map param){ 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) { //数据转换 ArrayList<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); } }); } public MutableLiveData<ArrayList<D>> getLiveData(){ return liveData; } app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java
@@ -5,6 +5,8 @@ import com.runt.open.mvvm.databinding.RefreshRecyclerBinding; import com.runt.open.mvvm.ui.adapter.CoinTransAdapter; import java.util.Map; /** * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17. */ @@ -16,6 +18,13 @@ protected String initTitle() { return "金币记录"; } @Override protected Map requestParams() { Map map = super.requestParams(); map.put("inOrOut",0); return map; } } } app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java
@@ -1,11 +1,7 @@ package com.runt.open.mvvm.ui.loadpage; import com.runt.open.mvvm.base.model.LoadPageViewModel; import com.runt.open.mvvm.data.HttpApiResult; import com.runt.open.mvvm.data.PageResult; import com.runt.open.mvvm.data.Results; import io.reactivex.Observable; /** * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17. @@ -13,15 +9,15 @@ public class PageViewModels { public static class HomeViewModel extends LoadPageViewModel<Results.Message> { @Override public Observable<HttpApiResult<PageResult<Results.Message>>> request(int page, Object... objects) { return commonApi.getMsgList(page,SIZE); protected String requestUrl() { return "getMsgList"; } } public static class CoinRecordViewModel extends LoadPageViewModel<Results.CustomCoin>{ @Override public Observable<HttpApiResult<PageResult<Results.CustomCoin>>> request(int page, Object... objects) { return commonApi.getCoinRecord(page,SIZE,(int)objects[0]); protected String requestUrl() { return "coinRecord"; } } }