From fdecd14206158934dc07d0aa052c36a1662629a4 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 12 Jul 2023 17:36:16 +0800 Subject: [PATCH] Optimize search ux --- .../android/tv/ui/activity/DetailActivity.java | 16 +++++++++++----- .../android/tv/ui/activity/DetailActivity.java | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 52ba05490..9698a5ae5 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -968,14 +968,20 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.part.setTag(keyword); } + private boolean isPass(Site item, boolean searchOnly) { + if (isAutoMode() && !item.isChangeable() && !searchOnly) return false; + if (isAutoMode() && item.getKey().equals(getKey())) return false; + return item.isSearchable(); + } + private void startSearch(String keyword) { mSearchAdapter.clear(); mExecutor = Executors.newFixedThreadPool(Constant.THREAD_POOL); - for (Site site : ApiConfig.get().getSites()) { - if (isAutoMode() && !site.isChangeable()) continue; - if (isAutoMode() && site.getKey().equals(getKey())) continue; - if (site.isSearchable()) mExecutor.execute(() -> search(site, keyword)); - } + List sites = new ArrayList<>(); + List items = ApiConfig.get().getSites(); + for (Site item : items) if (isPass(item, false)) sites.add(item); + if (sites.isEmpty()) for (Site item : items) if (isPass(item, true)) sites.add(item); + for (Site site : sites) mExecutor.execute(() -> search(site, keyword)); } private void stopSearch() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 8b7f3e2fd..79e2e3556 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -1034,14 +1034,20 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust startSearch(keyword); } + private boolean isPass(Site item, boolean searchOnly) { + if (isAutoMode() && !item.isChangeable() && !searchOnly) return false; + if (isAutoMode() && item.getKey().equals(getKey())) return false; + return item.isSearchable(); + } + private void startSearch(String keyword) { mSearchAdapter.clear(); mExecutor = Executors.newFixedThreadPool(Constant.THREAD_POOL * 2); - for (Site site : ApiConfig.get().getSites()) { - if (site.getKey().equals(getKey())) continue; - if (isAutoMode() && !site.isChangeable()) continue; - if (site.isSearchable()) mExecutor.execute(() -> search(site, keyword)); - } + List sites = new ArrayList<>(); + List items = ApiConfig.get().getSites(); + for (Site item : items) if (isPass(item, false)) sites.add(item); + if (sites.isEmpty()) for (Site item : items) if (isPass(item, true)) sites.add(item); + for (Site site : sites) mExecutor.execute(() -> search(site, keyword)); } private void stopSearch() {