From 16cc726b52e3b16161fb3a85e2bccd6635a43643 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 30 Jul 2023 17:00:54 +0800 Subject: [PATCH] [mobile] support search pg --- .../com/fongmi/android/tv/bean/Collect.java | 10 ++++++--- .../android/tv/model/SiteViewModel.java | 2 +- .../tv/ui/activity/CollectActivity.java | 22 +++++++++++++++++-- .../android/tv/ui/adapter/CollectAdapter.java | 4 ++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Collect.java b/app/src/main/java/com/fongmi/android/tv/bean/Collect.java index fe315821e..310b0e234 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Collect.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Collect.java @@ -13,9 +13,9 @@ public class Collect { private boolean activated; public static Collect all() { - Collect all = new Collect(Site.get("all", ResUtil.getString(R.string.all)), new ArrayList<>()); - all.setActivated(true); - return all; + Collect item = new Collect(Site.get("all", ResUtil.getString(R.string.all)), new ArrayList<>()); + item.setActivated(true); + return item; } public static Collect create(List list) { @@ -42,4 +42,8 @@ public class Collect { public void setActivated(boolean activated) { this.activated = activated; } + + public boolean isAll() { + return getSite().getKey().equals("all"); + } } diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index 435ce2654..edb9ae06c 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -202,7 +202,7 @@ public class SiteViewModel extends ViewModel { } public void searchContent(Site site, String keyword, String page) { - execute(search, () -> { + execute(result, () -> { if (site.getType() == 3) { Spider spider = ApiConfig.get().getCSP(site); String searchContent = spider.searchContent(Trans.t2s(keyword), false, page); 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 bd0a22d56..e37171483 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 @@ -35,6 +35,7 @@ import com.fongmi.android.tv.ui.adapter.VodAdapter; import com.fongmi.android.tv.ui.adapter.WordAdapter; import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.base.ViewType; +import com.fongmi.android.tv.ui.custom.CustomScroller; import com.fongmi.android.tv.ui.custom.CustomTextListener; import com.fongmi.android.tv.ui.custom.dialog.SiteDialog; import com.fongmi.android.tv.utils.Prefers; @@ -51,13 +52,14 @@ import java.util.concurrent.Executors; import okhttp3.Call; import okhttp3.Response; -public class CollectActivity extends BaseActivity implements SiteCallback, WordAdapter.OnClickListener, RecordAdapter.OnClickListener, CollectAdapter.OnClickListener, VodAdapter.OnClickListener { +public class CollectActivity extends BaseActivity implements CustomScroller.Callback, SiteCallback, WordAdapter.OnClickListener, RecordAdapter.OnClickListener, CollectAdapter.OnClickListener, VodAdapter.OnClickListener { private ActivityCollectBinding mBinding; private CollectAdapter mCollectAdapter; private RecordAdapter mRecordAdapter; private ExecutorService mExecutor; private WordAdapter mWordAdapter; + private CustomScroller mScroller; private SiteViewModel mViewModel; private VodAdapter mVodAdapter; private List mSites; @@ -87,6 +89,7 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA @Override protected void initView(Bundle savedInstanceState) { + mScroller = new CustomScroller(this); mSites = new ArrayList<>(); setRecyclerView(); setLayoutSize(); @@ -120,6 +123,7 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA mBinding.collect.setItemAnimator(null); mBinding.collect.setAdapter(mCollectAdapter = new CollectAdapter(this)); mBinding.recycler.setHasFixedSize(true); + mBinding.recycler.addOnScrollListener(mScroller); mBinding.recycler.setAdapter(mVodAdapter = new VodAdapter(this)); mBinding.wordRecycler.setHasFixedSize(true); mBinding.wordRecycler.setAdapter(mWordAdapter = new WordAdapter(this)); @@ -145,10 +149,17 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA private void setViewModel() { mViewModel = new ViewModelProvider(this).get(SiteViewModel.class); mViewModel.search.observe(this, result -> { - if (mCollectAdapter.getPosition() == 0) mVodAdapter.addAll(result.getList()); + if (mCollectAdapter.getActivated().isAll()) mVodAdapter.addAll(result.getList()); mCollectAdapter.add(Collect.create(result.getList())); 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()); + if (same) mCollectAdapter.getActivated().getList().addAll(result.getList()); + if (same) mVodAdapter.addAll(result.getList()); + }); } private void checkKeyword() { @@ -270,6 +281,13 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA return false; } + @Override + public void onLoadMore(String page) { + if (mCollectAdapter.getActivated().isAll()) return; + mViewModel.searchContent(mCollectAdapter.getActivated().getSite(), mBinding.keyword.getText().toString(), page); + mScroller.setLoading(true); + } + @Override public void onBackPressed() { if (isVisible(mBinding.result)) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/CollectAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/CollectAdapter.java index 2d41baff7..257e33c45 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/CollectAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/CollectAdapter.java @@ -48,6 +48,10 @@ public class CollectAdapter extends RecyclerView.Adapter