diff --git a/app/src/leanback/java/com/fongmi/android/tv/bean/Cache.java b/app/src/leanback/java/com/fongmi/android/tv/bean/Cache.java index 4e8c42dec..a190417e1 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/bean/Cache.java +++ b/app/src/leanback/java/com/fongmi/android/tv/bean/Cache.java @@ -35,6 +35,12 @@ public class Cache { return filters == null ? Collections.emptyList() : filters; } + public static List copy(String typeId) { + List filters = get().cache.get(typeId); + if (filters == null) return Collections.emptyList(); + return filters.stream().map(Filter::copy).toList(); + } + public static Cache clear() { get().cache.clear(); return get(); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java index dd1bf5bfc..c990bb6cc 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java @@ -18,7 +18,6 @@ import com.fongmi.android.tv.ui.activity.VodActivity; import com.fongmi.android.tv.ui.base.BaseFragment; import java.util.HashMap; -import java.util.List; import java.util.Optional; public class FolderFragment extends BaseFragment { @@ -63,10 +62,8 @@ public class FolderFragment extends BaseFragment { } private HashMap getExtend() { - List cache = Cache.get(mType); HashMap extend = new HashMap<>(); - for (Filter filter : cache) filter.getValue().forEach(value -> value.setActivated(false)); - for (Filter filter : cache) if (filter.getInit() != null) extend.put(filter.getKey(), filter.getInit()); + for (Filter filter : Cache.get(mType)) if (filter.getInit() != null) extend.put(filter.getKey(), filter.getInit()); return extend; } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index 12d2e84d5..6eb032cdb 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -90,7 +90,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac } private List getFilter() { - return Cache.get(getTypeId()); + return Cache.copy(getTypeId()); } private Site getSite() { diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Filter.java b/app/src/main/java/com/fongmi/android/tv/bean/Filter.java index 469a48165..3367e8477 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Filter.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Filter.java @@ -38,6 +38,9 @@ public class Filter implements Parcelable { return items == null ? Collections.emptyList() : items; } + public Filter() { + } + public String getKey() { return key; } @@ -64,6 +67,16 @@ public class Filter implements Parcelable { return this; } + public Filter copy() { + Filter copy = new Filter(); + copy.key = this.key; + copy.name = this.name; + copy.init = this.init; + copy.value = new ArrayList<>(); + getValue().forEach(item -> copy.value.add(item.copy())); + return copy; + } + public Filter trans() { if (Trans.pass()) return this; getValue().forEach(Value::trans); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Value.java b/app/src/main/java/com/fongmi/android/tv/bean/Value.java index ef9d79280..f84b6f5c0 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Value.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Value.java @@ -64,6 +64,12 @@ public class Value implements Parcelable, Diffable { else activated = equal; } + public Value copy() { + Value copy = new Value(n, v); + copy.activated = this.activated; + return copy; + } + public Value trans() { this.n = Trans.s2t(n); return this;