From 30c73ed5b9617ff6b4d0d849b4e3f6abec96f790 Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 10 Oct 2023 00:35:15 +0800 Subject: [PATCH] Fix crash --- .../fongmi/android/tv/ui/activity/VodActivity.java | 12 ++++++++++-- .../main/java/com/fongmi/android/tv/bean/Class.java | 2 ++ .../main/java/com/fongmi/android/tv/bean/Filter.java | 8 ++++++++ .../main/java/com/fongmi/android/tv/bean/Result.java | 6 ------ 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java index 4fa2a7b7e..077b841a0 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java @@ -21,6 +21,7 @@ import androidx.viewpager.widget.ViewPager; import com.fongmi.android.tv.App; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.Class; +import com.fongmi.android.tv.bean.Filter; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.databinding.ActivityVodBinding; @@ -29,10 +30,13 @@ import com.fongmi.android.tv.ui.fragment.VodFragment; import com.fongmi.android.tv.ui.presenter.TypePresenter; import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Utils; +import com.github.catvod.utils.Prefers; import com.github.catvod.utils.Trans; +import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; +import java.util.Map; public class VodActivity extends BaseActivity implements TypePresenter.OnClickListener { @@ -50,6 +54,7 @@ public class VodActivity extends BaseActivity implements TypePresenter.OnClickLi Intent intent = new Intent(activity, VodActivity.class); intent.putExtra("key", key); intent.putExtra("result", result); + for (Map.Entry> entry : result.getFilters().entrySet()) Prefers.put(entry.getKey(), new Gson().toJson(entry.getValue())); activity.startActivity(intent); } @@ -61,6 +66,10 @@ public class VodActivity extends BaseActivity implements TypePresenter.OnClickLi return getIntent().getParcelableExtra("result"); } + private List getFilter(String typeId) { + return Filter.arrayFrom(Prefers.getString(typeId)); + } + private Site getSite() { return ApiConfig.get().getSite(getKey()); } @@ -108,8 +117,7 @@ public class VodActivity extends BaseActivity implements TypePresenter.OnClickLi private void setTypes() { Result result = getResult(); result.setTypes(getTypes(result)); - for (Class item : result.getTypes()) if (result.getFilters().containsKey(item.getTypeId())) item.setFilter(false); - for (Class item : result.getTypes()) if (result.getFilters().containsKey(item.getTypeId())) item.setFilters(result.getFilters().get(item.getTypeId())); + for (Class item : result.getTypes()) item.setFilters(getFilter(item.getTypeId())); mAdapter.setItems(result.getTypes(), null); } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Class.java b/app/src/main/java/com/fongmi/android/tv/bean/Class.java index 6cb3d7053..e15c06612 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Class.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Class.java @@ -68,7 +68,9 @@ public class Class implements Parcelable { } public void setFilters(List filters) { + if (filters == null || filters.isEmpty()) return; this.filters = filters; + this.setFilter(false); } public void setFilter(Boolean filter) { 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 f4b9167c0..26e3fc9c0 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 @@ -10,7 +10,9 @@ import com.google.common.collect.Iterables; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.annotations.SerializedName; +import com.google.gson.reflect.TypeToken; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -30,6 +32,12 @@ public class Filter implements Parcelable { return new Gson().fromJson(element, Filter.class); } + public static List arrayFrom(String result) { + Type listType = new TypeToken>() {}.getType(); + List items = new Gson().fromJson(result, listType); + return items == null ? Collections.emptyList() : items; + } + public Filter() { } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Result.java b/app/src/main/java/com/fongmi/android/tv/bean/Result.java index e7d7fa3d9..7a5e80ffb 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Result.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Result.java @@ -6,13 +6,11 @@ import android.text.TextUtils; import androidx.annotation.NonNull; -import com.fongmi.android.tv.App; import com.fongmi.android.tv.gson.FilterAdapter; import com.fongmi.android.tv.gson.MsgAdapter; import com.fongmi.android.tv.gson.UrlAdapter; import com.github.catvod.utils.Json; import com.github.catvod.utils.Trans; -import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.annotations.JsonAdapter; @@ -24,7 +22,6 @@ import org.simpleframework.xml.Path; import org.simpleframework.xml.Root; import org.simpleframework.xml.core.Persister; -import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -297,15 +294,12 @@ public class Result implements Parcelable { public void writeToParcel(Parcel dest, int flags) { dest.writeList(this.types); dest.writeTypedList(this.list); - dest.writeString(App.gson().toJson(this.filters)); } protected Result(Parcel in) { this.types = new ArrayList<>(); in.readList(this.types, Class.class.getClassLoader()); this.list = in.createTypedArrayList(Vod.CREATOR); - Type listType = new TypeToken>>() {}.getType(); - this.filters = App.gson().fromJson(in.readString(), listType); } public static final Creator CREATOR = new Creator<>() {