From c504d9b9e12cad60dec083012fb5eeee16d9efeb Mon Sep 17 00:00:00 2001 From: nilupeng <qingingrunt2010@qq.com> Date: Tue, 09 Aug 2022 03:55:06 +0000 Subject: [PATCH] 新分页框架 --- app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java | 11 +++-- app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeViewModel.java | 8 +++- app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java | 7 +-- app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeFragment.java | 8 ---- app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java | 51 +++++++++++-------------- app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java | 9 ++++ 6 files changed, 48 insertions(+), 46 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 58a319a..55e0fac 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 @@ -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() { 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 d0489f1..e58491b 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 @@ -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() { 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 a001534..bc7a5d7 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 @@ -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); + } + } + } diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java b/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java index dbdc21b..964fd28 100644 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java +++ b/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); } diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeFragment.java b/app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeFragment.java index 7e944e6..039353d 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeFragment.java +++ b/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(); - } } \ No newline at end of file diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeViewModel.java index b5d5f73..f827a0c 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeViewModel.java +++ b/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); } } \ No newline at end of file -- Gitblit v1.9.1