From 09dde14e3803a83b99b67fd36ea06a73ae624fd4 Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 31 Jul 2023 23:27:19 +0800 Subject: [PATCH] [mobile] support page count --- .../com/fongmi/android/tv/bean/Result.java | 6 +++++ .../tv/ui/activity/CollectActivity.java | 7 +++--- .../android/tv/ui/custom/CustomScroller.java | 24 ++++++++++++++++--- .../android/tv/ui/fragment/TypeFragment.java | 2 +- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Result.java b/app/src/main/java/com/fongmi/android/tv/bean/Result.java index 3ec481c55..d23fb2a90 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Result.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Result.java @@ -59,6 +59,8 @@ public class Result { private String key; @SerializedName("subs") private List subs; + @SerializedName("pagecount") + private int pagecount; private boolean error; private String msg; @@ -215,6 +217,10 @@ public class Result { return subs == null ? Collections.emptyList() : subs; } + public int getPageCount() { + return pagecount; + } + public boolean isError() { return error; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index c4cddf17b..a6a17b45f 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -154,11 +154,10 @@ public class CollectActivity extends BaseActivity implements CustomScroller.Call mCollectAdapter.add(result.getList()); }); mViewModel.result.observe(this, result -> { - int size = result.getList().size(); - mScroller.endLoading(size == 0); - boolean same = size > 0 && mCollectAdapter.getActivated().getSite().equals(result.getList().get(0).getSite()); + boolean same = result.getList().size() > 0 && mCollectAdapter.getActivated().getSite().equals(result.getList().get(0).getSite()); if (same) mCollectAdapter.getActivated().getList().addAll(result.getList()); if (same) mVodAdapter.addAll(result.getList()); + mScroller.endLoading(result); }); } @@ -231,6 +230,7 @@ public class CollectActivity extends BaseActivity implements CustomScroller.Call } private void showAgent() { + mScroller.reset(); mVodAdapter.clear(); mCollectAdapter.clear(); mBinding.view.setVisibility(View.GONE); @@ -268,6 +268,7 @@ public class CollectActivity extends BaseActivity implements CustomScroller.Call mBinding.recycler.scrollToPosition(0); mCollectAdapter.setActivated(position); mVodAdapter.clear().addAll(item.getList()); + mScroller.setEnable(true); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomScroller.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomScroller.java index 97ee43f3b..e56fa670c 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomScroller.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomScroller.java @@ -3,24 +3,29 @@ package com.fongmi.android.tv.ui.custom; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import com.fongmi.android.tv.bean.Result; + public class CustomScroller extends RecyclerView.OnScrollListener { private final Callback callback; private boolean loading; + private boolean enable; private int page; public CustomScroller(Callback callback) { this.callback = callback; + this.enable = true; this.page = 1; } @Override public void onScrolled(@NonNull RecyclerView view, int dx, int dy) { - if (isLoading() || view.getScrollState() == RecyclerView.SCROLL_STATE_IDLE || callback == null) return; + if (!isEnable() || isLoading() || view.getScrollState() == RecyclerView.SCROLL_STATE_IDLE || callback == null) return; if (!view.canScrollVertically(1) && dy > 0) callback.onLoadMore(String.valueOf(++page)); } public void reset() { + enable = true; page = 1; } @@ -32,12 +37,25 @@ public class CustomScroller extends RecyclerView.OnScrollListener { return loading; } + public boolean isEnable() { + return enable; + } + public void setLoading(boolean loading) { this.loading = loading; } - public void endLoading(boolean empty) { - if (empty) page--; + public void setEnable(int pageCount) { + this.enable = page < pageCount || pageCount == 0; + } + + public void setEnable(boolean enable) { + this.enable = enable; + } + + public void endLoading(Result result) { + if (result.getList().isEmpty()) page--; + setEnable(result.getPageCount()); setLoading(false); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index e835b571f..79f622081 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -133,7 +133,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac int size = result.getList().size(); mBinding.progressLayout.showContent(isFolder(), size); mBinding.swipeLayout.setRefreshing(false); - mScroller.endLoading(size == 0); + mScroller.endLoading(result); addVideo(result.getList()); checkPosition(); checkPage(size);