diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 36406410b..ae5956eab 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -29,6 +29,7 @@ import com.fongmi.android.tv.api.config.WallConfig; import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Func; import com.fongmi.android.tv.bean.History; +import com.fongmi.android.tv.bean.Keep; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.bean.Style; @@ -43,7 +44,7 @@ import com.fongmi.android.tv.impl.ChainTask; import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.player.Source; import com.fongmi.android.tv.server.Server; -import com.fongmi.android.tv.ui.adapter.diff.HistoryDiffCallback; +import com.fongmi.android.tv.ui.adapter.diff.BaseDiffCallback; import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.CustomRowPresenter; import com.fongmi.android.tv.ui.custom.CustomSelector; @@ -267,7 +268,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen if (renew) mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this)); if ((items.isEmpty() && exist) || (renew && exist)) mAdapter.removeItems(historyIndex, 1); if ((!items.isEmpty() && !exist) || (renew && exist)) mAdapter.add(historyIndex, new ListRow(mHistoryAdapter)); - mHistoryAdapter.setItems(items, new HistoryDiffCallback()); + mHistoryAdapter.setItems(items, new BaseDiffCallback()); } private void setHistoryDelete(boolean delete) { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java index 581ed971c..10ed4bff3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java @@ -50,7 +50,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis } private void getKeep() { - mAdapter.addAll(Keep.getVod()); + mAdapter.setItems(Keep.getVod()); mBinding.progressLayout.showContent(true, mAdapter.getItemCount()); } @@ -86,7 +86,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis @Override public void onItemDelete(Keep item) { - mAdapter.delete(item.delete()); + mAdapter.remove(item.delete()); if (mAdapter.getItemCount() == 0) mAdapter.setDelete(false); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java index 9370f7352..32ee0b8f7 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java @@ -63,7 +63,7 @@ public class ConfigAdapter extends RecyclerView.Adapter mListener.onDeleteClick(item)); } - public static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterConfigBinding binding; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/DohAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/DohAdapter.java index 0481166ff..810ccc30a 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/DohAdapter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/DohAdapter.java @@ -55,7 +55,7 @@ public class DohAdapter extends RecyclerView.Adapter { holder.binding.text.setOnClickListener(v -> mListener.onItemClick(item)); } - public static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterDohBinding binding; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeepAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeepAdapter.java index f4d6383f8..5c6d21284 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeepAdapter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeepAdapter.java @@ -5,28 +5,21 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; -import androidx.recyclerview.widget.AsyncListDiffer; import androidx.recyclerview.widget.RecyclerView; import com.fongmi.android.tv.Product; import com.fongmi.android.tv.bean.Keep; import com.fongmi.android.tv.databinding.AdapterVodBinding; -import com.fongmi.android.tv.ui.adapter.diff.KeepDiffCallback; import com.fongmi.android.tv.utils.ImgUtil; import com.fongmi.android.tv.utils.ResUtil; -import java.util.ArrayList; -import java.util.List; +public class KeepAdapter extends BaseDiffAdapter { -public class KeepAdapter extends RecyclerView.Adapter { - - private final AsyncListDiffer differ; private final OnClickListener listener; private int width, height; private boolean delete; public KeepAdapter(OnClickListener listener) { - this.differ = new AsyncListDiffer<>(this, new KeepDiffCallback().asItemCallback()); this.listener = listener; setLayoutSize(); } @@ -47,27 +40,13 @@ public class KeepAdapter extends RecyclerView.Adapter { boolean onLongClick(); } - public void addAll(List items) { - differ.submitList(items); - } - - public void delete(Keep item) { - List current = new ArrayList<>(differ.getCurrentList()); - if (current.remove(item)) differ.submitList(current); - } - - public boolean isDelete() { - return delete; - } - public void setDelete(boolean delete) { this.delete = delete; notifyItemRangeChanged(0, getItemCount()); } - @Override - public int getItemCount() { - return differ.getCurrentList().size(); + public boolean isDelete() { + return delete; } @NonNull @@ -81,7 +60,7 @@ public class KeepAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { - Keep item = differ.getCurrentList().get(position); + Keep item = getItem(position); setClickListener(holder.itemView, item); holder.binding.name.setText(item.getVodName()); holder.binding.remark.setVisibility(View.GONE); @@ -99,7 +78,7 @@ public class KeepAdapter extends RecyclerView.Adapter { }); } - public static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterVodBinding binding; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java index 159083261..130bba590 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java @@ -69,7 +69,7 @@ public class LiveAdapter extends RecyclerView.Adapter { holder.binding.pass.setOnLongClickListener(v -> mListener.onPassLongClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterLiveBinding binding; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/QualityAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/QualityAdapter.java index 9baa39364..b52795904 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/QualityAdapter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/QualityAdapter.java @@ -59,7 +59,7 @@ public class QualityAdapter extends RecyclerView.Adapter mListener.onDeleteClick(item)); } - public static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterRestoreBinding binding; 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 index 30aa3b0d1..e5dcf158c 100644 --- 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 @@ -103,7 +103,7 @@ public class SiteAdapter extends RecyclerView.Adapter { notifyItemRangeChanged(0, getItemCount()); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterSiteBinding binding; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/diff/BaseDiffCallback.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/diff/BaseDiffCallback.java new file mode 100644 index 000000000..22bef4d7f --- /dev/null +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/diff/BaseDiffCallback.java @@ -0,0 +1,17 @@ +package com.fongmi.android.tv.ui.adapter.diff; + +import androidx.annotation.NonNull; +import androidx.leanback.widget.DiffCallback; + +public class BaseDiffCallback> extends DiffCallback { + + @Override + public boolean areItemsTheSame(T oldItem, @NonNull T newItem) { + return oldItem.isSameItem(newItem); + } + + @Override + public boolean areContentsTheSame(T oldItem, @NonNull T newItem) { + return oldItem.isSameContent(newItem); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/bean/History.java b/app/src/main/java/com/fongmi/android/tv/bean/History.java index 2b7782977..b1e73ab1d 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/History.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/History.java @@ -15,6 +15,7 @@ import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.db.AppDatabase; import com.fongmi.android.tv.event.RefreshEvent; +import com.fongmi.android.tv.ui.adapter.diff.Diffable; import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; @@ -24,7 +25,7 @@ import java.util.List; import java.util.concurrent.TimeUnit; @Entity -public class History { +public class History implements Diffable { @NonNull @PrimaryKey @@ -358,4 +359,14 @@ public class History { public String toString() { return App.gson().toJson(this); } + + @Override + public boolean isSameItem(History other) { + return getKey().equals(other.getKey()); + } + + @Override + public boolean isSameContent(History other) { + return equals(other); + } } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Keep.java b/app/src/main/java/com/fongmi/android/tv/bean/Keep.java index 9dd3b50e8..f6f1182b1 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Keep.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Keep.java @@ -9,6 +9,7 @@ import com.fongmi.android.tv.App; import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.db.AppDatabase; import com.fongmi.android.tv.event.RefreshEvent; +import com.fongmi.android.tv.ui.adapter.diff.Diffable; import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; @@ -17,7 +18,7 @@ import java.util.Collections; import java.util.List; @Entity -public class Keep { +public class Keep implements Diffable { @NonNull @PrimaryKey @@ -176,4 +177,14 @@ public class Keep { if (!(obj instanceof Keep it)) return false; return getKey().equals(it.getKey()) && getVodName().equals(it.getVodName()) && getVodPic().equals(it.getVodPic()) && getCreateTime() == it.getCreateTime(); } + + @Override + public boolean isSameItem(Keep other) { + return getKey().equals(other.getKey()); + } + + @Override + public boolean isSameContent(Keep other) { + return equals(other); + } } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/BaseDiffAdapter.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/BaseDiffAdapter.java new file mode 100644 index 000000000..f94ce7b75 --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/ui/adapter/BaseDiffAdapter.java @@ -0,0 +1,67 @@ +package com.fongmi.android.tv.ui.adapter; + +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.AsyncListDiffer; +import androidx.recyclerview.widget.RecyclerView; + +import com.fongmi.android.tv.ui.adapter.diff.BaseItemCallback; +import com.fongmi.android.tv.ui.adapter.diff.Diffable; + +import java.util.ArrayList; +import java.util.List; + +public abstract class BaseDiffAdapter, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter { + + protected final AsyncListDiffer differ; + + public BaseDiffAdapter() { + this.differ = new AsyncListDiffer<>(this, new BaseItemCallback()); + } + + public T getItem(int position) { + return differ.getCurrentList().get(position); + } + + public List getItems() { + return differ.getCurrentList(); + } + + public void setItems(List list) { + differ.submitList(list); + } + + public void addItem(T item) { + List current = new ArrayList<>(getItems()); + current.add(item); + setItems(current); + } + + public void addItems(List items) { + List current = new ArrayList<>(getItems()); + current.addAll(items); + setItems(current); + } + + public void remove(T item) { + List current = new ArrayList<>(getItems()); + if (current.remove(item)) setItems(current); + } + + public void clear() { + setItems(new ArrayList<>()); + } + + @Override + public int getItemCount() { + return differ.getCurrentList().size(); + } + + @NonNull + @Override + public abstract VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType); + + @Override + public abstract void onBindViewHolder(@NonNull VH holder, int position); +} diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/BaseDiffCallback.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/BaseDiffCallback.java deleted file mode 100644 index e8a7e92c1..000000000 --- a/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/BaseDiffCallback.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.fongmi.android.tv.ui.adapter.diff; - -import androidx.annotation.NonNull; -import androidx.leanback.widget.DiffCallback; -import androidx.recyclerview.widget.DiffUtil; - -public abstract class BaseDiffCallback extends DiffCallback { - - @Override - public abstract boolean areItemsTheSame(@NonNull T oldItem, @NonNull T newItem); - - @Override - public abstract boolean areContentsTheSame(@NonNull T oldItem, @NonNull T newItem); - - public final DiffUtil.ItemCallback asItemCallback() { - return new DiffUtil.ItemCallback() { - @Override - public boolean areItemsTheSame(@NonNull T oldItem, @NonNull T newItem) { - return BaseDiffCallback.this.areItemsTheSame(oldItem, newItem); - } - - @Override - public boolean areContentsTheSame(@NonNull T oldItem, @NonNull T newItem) { - return BaseDiffCallback.this.areContentsTheSame(oldItem, newItem); - } - }; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/BaseItemCallback.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/BaseItemCallback.java new file mode 100644 index 000000000..dce520d1b --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/BaseItemCallback.java @@ -0,0 +1,17 @@ +package com.fongmi.android.tv.ui.adapter.diff; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DiffUtil; + +public class BaseItemCallback> extends DiffUtil.ItemCallback { + + @Override + public boolean areItemsTheSame(@NonNull T oldItem, @NonNull T newItem) { + return oldItem.isSameItem(newItem); + } + + @Override + public boolean areContentsTheSame(@NonNull T oldItem, @NonNull T newItem) { + return oldItem.isSameContent(newItem); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/Diffable.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/Diffable.java new file mode 100644 index 000000000..d55a3d04d --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/Diffable.java @@ -0,0 +1,8 @@ +package com.fongmi.android.tv.ui.adapter.diff; + +public interface Diffable { + + boolean isSameItem(T other); + + boolean isSameContent(T other); +} diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/HistoryDiffCallback.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/HistoryDiffCallback.java deleted file mode 100644 index b038d0275..000000000 --- a/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/HistoryDiffCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.fongmi.android.tv.ui.adapter.diff; - -import com.fongmi.android.tv.bean.History; - -import org.jspecify.annotations.NonNull; - -public class HistoryDiffCallback extends BaseDiffCallback { - - @Override - public boolean areItemsTheSame(@NonNull History oldItem, @NonNull History newItem) { - return oldItem.getKey().equals(newItem.getKey()); - } - - @Override - public boolean areContentsTheSame(@NonNull History oldItem, @NonNull History newItem) { - return oldItem.equals(newItem); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/KeepDiffCallback.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/KeepDiffCallback.java deleted file mode 100644 index 887882e8c..000000000 --- a/app/src/main/java/com/fongmi/android/tv/ui/adapter/diff/KeepDiffCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.fongmi.android.tv.ui.adapter.diff; - -import com.fongmi.android.tv.bean.Keep; - -import org.jspecify.annotations.NonNull; - -public class KeepDiffCallback extends BaseDiffCallback { - - @Override - public boolean areItemsTheSame(@NonNull Keep oldItem, @NonNull Keep newItem) { - return oldItem.getKey().equals(newItem.getKey()); - } - - @Override - public boolean areContentsTheSame(@NonNull Keep oldItem, @NonNull Keep newItem) { - return oldItem.equals(newItem); - } -} diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java index 2c9a1fc04..36b27949f 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java @@ -60,7 +60,7 @@ public class HistoryActivity extends BaseActivity implements HistoryAdapter.OnCl } private void getHistory() { - mAdapter.addAll(History.get()); + mAdapter.setItems(History.get()); mBinding.progressLayout.showContent(true, mAdapter.getItemCount()); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java index 05885b23f..876f85777 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java @@ -64,7 +64,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis } private void getKeep() { - mAdapter.addAll(Keep.getVod()); + mAdapter.setItems(Keep.getVod()); mBinding.progressLayout.showContent(true, mAdapter.getItemCount()); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java index 59ca77773..f0d9afa59 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java @@ -81,7 +81,7 @@ public class ChannelAdapter extends RecyclerView.Adapter mListener.onLongClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterChannelBinding binding; 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 f62bf33cb..8dd55c4f8 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 @@ -76,7 +76,7 @@ public class CollectAdapter extends RecyclerView.Adapter mListener.onItemClick(position, item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterCollectBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java index 63ffad8d3..e52ecba96 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java @@ -61,7 +61,7 @@ public class ConfigAdapter extends RecyclerView.Adapter mListener.onDeleteClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterConfigBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/DeviceAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/DeviceAdapter.java index 7be64f17f..a45e6ef44 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/DeviceAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/DeviceAdapter.java @@ -81,7 +81,7 @@ public class DeviceAdapter extends RecyclerView.Adapter { holder.binding.image.setImageResource(file.isDirectory() ? R.drawable.ic_folder : R.drawable.ic_file); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterFileBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/FilterAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/FilterAdapter.java index 97c1f95a5..ea0401288 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/FilterAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/FilterAdapter.java @@ -41,7 +41,7 @@ public class FilterAdapter extends RecyclerView.Adapter { holder.binding.text.setOnClickListener(v -> mListener.onItemClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterFlagBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/GroupAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/GroupAdapter.java index 4555cc6f2..39f2f5753 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/GroupAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/GroupAdapter.java @@ -87,7 +87,7 @@ public class GroupAdapter extends RecyclerView.Adapter holder.binding.getRoot().setOnClickListener(view -> mListener.onItemClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterGroupBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/HistoryAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/HistoryAdapter.java index d7fd82280..520e4e384 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/HistoryAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/HistoryAdapter.java @@ -12,20 +12,14 @@ import com.fongmi.android.tv.bean.History; import com.fongmi.android.tv.databinding.AdapterVodBinding; import com.fongmi.android.tv.utils.ImgUtil; -import java.util.ArrayList; -import java.util.List; - -public class HistoryAdapter extends RecyclerView.Adapter { +public class HistoryAdapter extends BaseDiffAdapter { private final OnClickListener mListener; - private final List mItems; private int width, height; - private boolean animate; private boolean delete; public HistoryAdapter(OnClickListener listener) { this.mListener = listener; - this.mItems = new ArrayList<>(); } public interface OnClickListener { @@ -47,37 +41,16 @@ public class HistoryAdapter extends RecyclerView.Adapter items) { - animate = true; - mItems.clear(); - mItems.addAll(items); - notifyDataSetChanged(); + notifyItemRangeChanged(0, getItemCount()); } + @Override public void clear() { - mItems.clear(); setDelete(false); - notifyDataSetChanged(); History.delete(VodConfig.getCid()); } - public void remove(History item) { - int index = mItems.indexOf(item); - if (index == -1) return; - mItems.remove(index); - notifyItemRemoved(index); - } - - @Override - public int getItemCount() { - return mItems.size(); - } - @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -89,15 +62,16 @@ public class HistoryAdapter extends RecyclerView.Adapter { -public class KeepAdapter extends RecyclerView.Adapter { - - private final OnClickListener mListener; - private final List mItems; + private final OnClickListener listener; private int width, height; private boolean delete; public KeepAdapter(OnClickListener listener) { - this.mItems = new ArrayList<>(); - this.mListener = listener; + this.listener = listener; } public interface OnClickListener { @@ -46,34 +41,16 @@ public class KeepAdapter extends RecyclerView.Adapter { public void setDelete(boolean delete) { this.delete = delete; - notifyItemRangeChanged(0, mItems.size()); - } - - public void addAll(List items) { - mItems.clear(); - mItems.addAll(items); - notifyDataSetChanged(); + notifyItemRangeChanged(0, getItemCount()); } + @Override public void clear() { - mItems.clear(); + super.clear(); setDelete(false); - notifyDataSetChanged(); Keep.deleteAll(); } - public void remove(Keep item) { - int index = mItems.indexOf(item); - if (index == -1) return; - mItems.remove(index); - notifyItemRemoved(index); - } - - @Override - public int getItemCount() { - return mItems.size(); - } - @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -85,7 +62,7 @@ public class KeepAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { - Keep item = mItems.get(position); + Keep item = getItem(position); holder.binding.name.setText(item.getVodName()); holder.binding.remark.setVisibility(View.GONE); holder.binding.site.setVisibility(View.VISIBLE); @@ -97,14 +74,14 @@ public class KeepAdapter extends RecyclerView.Adapter { } private void setClickListener(View root, Keep item) { - root.setOnLongClickListener(view -> mListener.onLongClick()); + root.setOnLongClickListener(view -> listener.onLongClick()); root.setOnClickListener(view -> { - if (isDelete()) mListener.onItemDelete(item); - else mListener.onItemClick(item); + if (isDelete()) listener.onItemDelete(item); + else listener.onItemClick(item); }); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterVodBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java index bbaa4e17b..9aa0a2245 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java @@ -69,7 +69,7 @@ public class LiveAdapter extends RecyclerView.Adapter { holder.binding.pass.setOnLongClickListener(v -> mListener.onPassLongClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterLiveBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ParseAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ParseAdapter.java index 2742e2c67..457ca18a4 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ParseAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ParseAdapter.java @@ -73,7 +73,7 @@ public class ParseAdapter extends RecyclerView.Adapter if (holder.lightBinding != null) holder.initView(holder.lightBinding.text, item); } - class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private AdapterParseDarkBinding darkBinding; private AdapterParseLightBinding lightBinding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/QualityAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/QualityAdapter.java index abd009e27..84afecaa9 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/QualityAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/QualityAdapter.java @@ -59,7 +59,7 @@ public class QualityAdapter extends RecyclerView.Adapter holder.binding.getRoot().setOnClickListener(v -> mListener.onItemClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterQuickBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/RecordAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/RecordAdapter.java index 2594e9813..cbb17f268 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/RecordAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/RecordAdapter.java @@ -69,7 +69,7 @@ public class RecordAdapter extends RecyclerView.Adapter mListener.onItemClick(text)); } - class ViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener { + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener { private final AdapterCollectRecordBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/RestoreAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/RestoreAdapter.java index d072c03cb..bdbeb3e72 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/RestoreAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/RestoreAdapter.java @@ -73,7 +73,7 @@ public class RestoreAdapter extends RecyclerView.Adapter mListener.onItemClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterRestoreBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java index 0c775733b..096624f24 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java @@ -98,7 +98,7 @@ public class SiteAdapter extends RecyclerView.Adapter { return item.isChangeable() ? R.drawable.ic_site_change : R.drawable.ic_site_block; } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterSiteBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java index fd90a30c0..4f563cec4 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java @@ -78,7 +78,7 @@ public class TypeAdapter extends RecyclerView.Adapter { holder.binding.text.setOnClickListener(v -> mListener.onItemClick(position, item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterTypeBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ValueAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ValueAdapter.java index c33bccb85..ecf007318 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ValueAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ValueAdapter.java @@ -50,7 +50,7 @@ public class ValueAdapter extends RecyclerView.Adapter mListener.setFilter(mKey, value); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterValueBinding binding; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java index 08e9e4404..fff37ed0b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java @@ -50,7 +50,7 @@ public class WordAdapter extends RecyclerView.Adapter { holder.binding.text.setOnClickListener(v -> mListener.onItemClick(item)); } - static class ViewHolder extends RecyclerView.ViewHolder { + public class ViewHolder extends RecyclerView.ViewHolder { private final AdapterCollectWordBinding binding;