From 485c4e60955d1a9e82c9887da7d8b71ad68ad257 Mon Sep 17 00:00:00 2001 From: nilupeng <qingingrunt2010@qq.com> Date: Thu, 11 Aug 2022 09:58:47 +0000 Subject: [PATCH] 合并优化 --- app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java | 10 +++- app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java | 10 +++- app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java | 39 +++++++++++++++---- app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java | 9 ++++ app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java | 12 ++---- 5 files changed, 57 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java b/app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java index 40cb405..a5cfaa5 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java +++ b/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()); } diff --git a/app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java b/app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java index f0f1986..0b1855e 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java +++ b/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()); } diff --git a/app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java b/app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java index 937ab38..1cdb1a1 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java +++ b/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; } diff --git a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java b/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java index d3cd5ce..8e0a194 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java +++ b/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; + } } } diff --git a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java b/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java index 994ee5e..1cd9e25 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java +++ b/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"; } } } -- Gitblit v1.9.1