From 4955d63abc16e572e2bff3dcd9545dc9f887a5bd Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 19 Dec 2022 18:19:05 +0800 Subject: [PATCH] Update search --- .../tv/ui/activity/SearchActivity.java | 4 ++ .../android/tv/ui/adapter/SiteAdapter.java | 68 +++++++++++++++++++ .../leanback/res/layout/activity_search.xml | 30 +++++++- .../res/layout/adapter_search_site.xml | 15 ++++ 4 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 app/src/leanback/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java create mode 100644 app/src/leanback/res/layout/adapter_search_site.xml diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java index 902b11509..b975307ad 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java @@ -21,6 +21,7 @@ import com.fongmi.android.tv.databinding.ActivitySearchBinding; import com.fongmi.android.tv.net.Callback; import com.fongmi.android.tv.net.OkHttp; import com.fongmi.android.tv.ui.adapter.HistoryAdapter; +import com.fongmi.android.tv.ui.adapter.SiteAdapter; import com.fongmi.android.tv.ui.adapter.WordAdapter; import com.fongmi.android.tv.ui.custom.CustomKeyboard; import com.fongmi.android.tv.ui.custom.CustomListener; @@ -90,6 +91,9 @@ public class SearchActivity extends BaseActivity implements WordAdapter.OnClickL } private void setRecyclerView() { + mBinding.siteRecycler.setHasFixedSize(true); + mBinding.siteRecycler.addItemDecoration(new SpaceItemDecoration(1, 16)); + mBinding.siteRecycler.setAdapter(new SiteAdapter()); mBinding.wordRecycler.setHasFixedSize(true); mBinding.wordRecycler.addItemDecoration(new SpaceItemDecoration(1, 16)); mBinding.wordRecycler.setAdapter(mWordAdapter = new WordAdapter(this)); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java new file mode 100644 index 000000000..a24ceb6f7 --- /dev/null +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java @@ -0,0 +1,68 @@ +package com.fongmi.android.tv.ui.adapter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.fongmi.android.tv.api.ApiConfig; +import com.fongmi.android.tv.bean.Site; +import com.fongmi.android.tv.databinding.AdapterSearchSiteBinding; + +import java.util.List; + +public class SiteAdapter extends RecyclerView.Adapter { + + private final List mItems; + + public SiteAdapter() { + this.mItems = ApiConfig.get().getSites(); + } + + @Override + public int getItemCount() { + return mItems.size(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new ViewHolder(AdapterSearchSiteBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + Site item = mItems.get(position); + holder.binding.site.setText((item.isSearchable() ? "√ " : "").concat(item.getName())); + } + + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { + + private final AdapterSearchSiteBinding binding; + + public ViewHolder(@NonNull AdapterSearchSiteBinding binding) { + super(binding.getRoot()); + this.binding = binding; + itemView.setOnClickListener(this); + itemView.setOnLongClickListener(this); + } + + @Override + public void onClick(View view) { + Site item = mItems.get(getLayoutPosition()); + item.setSearchable(!item.isSearchable()).save(); + notifyItemChanged(getLayoutPosition()); + } + + @Override + public boolean onLongClick(View v) { + Site item = mItems.get(getLayoutPosition()); + boolean result = !item.isSearchable(); + for (Site site : mItems) site.setSearchable(result).save(); + notifyItemRangeChanged(0, mItems.size()); + return true; + } + } +} diff --git a/app/src/leanback/res/layout/activity_search.xml b/app/src/leanback/res/layout/activity_search.xml index da94317a0..cec58b760 100644 --- a/app/src/leanback/res/layout/activity_search.xml +++ b/app/src/leanback/res/layout/activity_search.xml @@ -11,9 +11,37 @@ android:paddingTop="24dp" android:paddingEnd="24dp"> + + + + + + + + diff --git a/app/src/leanback/res/layout/adapter_search_site.xml b/app/src/leanback/res/layout/adapter_search_site.xml new file mode 100644 index 000000000..985562bcc --- /dev/null +++ b/app/src/leanback/res/layout/adapter_search_site.xml @@ -0,0 +1,15 @@ + + \ No newline at end of file