diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java index e73077133..ed1a10542 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java @@ -9,8 +9,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.fongmi.android.tv.ui.base.ViewType; -import com.github.catvod.utils.Trans; import com.fongmi.android.tv.utils.Utils; +import com.github.catvod.utils.Trans; import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; @@ -91,8 +91,7 @@ public class Vod { private Site site; public static List arrayFrom(String str) { - Type listType = new TypeToken>() { - }.getType(); + Type listType = new TypeToken>() {}.getType(); List items = new Gson().fromJson(str, listType); return items == null ? Collections.emptyList() : items; } @@ -378,7 +377,7 @@ public class Vod { return new Gson().toJson(this); } - public static class Episode { + public static class Episode implements Parcelable { @SerializedName("name") private String name; @@ -402,12 +401,6 @@ public class Vod { return new Gson().fromJson(str, Episode.class); } - public static List arrayFrom(String str) { - Type listType = new TypeToken>() {}.getType(); - List items = new Gson().fromJson(str, listType); - return items == null ? Collections.emptyList() : items; - } - public Episode(String name, String desc, String url) { this.number = Utils.getDigit(name); this.name = Trans.s2t(name); @@ -475,6 +468,40 @@ public class Vod { return getUrl().equals(it.getUrl()) && getName().equals(it.getName()); } + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.name); + dest.writeString(this.desc); + dest.writeString(this.url); + dest.writeInt(this.number); + dest.writeByte(this.activated ? (byte) 1 : (byte) 0); + } + + private Episode(Parcel in) { + this.name = in.readString(); + this.desc = in.readString(); + this.url = in.readString(); + this.number = in.readInt(); + this.activated = in.readByte() != 0; + } + + public static final Creator CREATOR = new Creator<>() { + @Override + public Episode createFromParcel(Parcel source) { + return new Episode(source); + } + + @Override + public Episode[] newArray(int size) { + return new Episode[size]; + } + }; + public static class Sorter implements Comparator { public static List sort(List items) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java index 52b0b3edf..23daeffc5 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java @@ -10,7 +10,6 @@ import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.GridLayoutManager; import androidx.viewbinding.ViewBinding; -import com.fongmi.android.tv.App; import com.fongmi.android.tv.bean.Vod; import com.fongmi.android.tv.databinding.FragmentEpisodeBinding; import com.fongmi.android.tv.model.SiteViewModel; @@ -18,6 +17,7 @@ import com.fongmi.android.tv.ui.adapter.EpisodeAdapter; import com.fongmi.android.tv.ui.base.BaseFragment; import com.fongmi.android.tv.ui.base.ViewType; +import java.util.ArrayList; import java.util.List; public class EpisodeFragment extends BaseFragment implements EpisodeAdapter.OnClickListener { @@ -30,14 +30,10 @@ public class EpisodeFragment extends BaseFragment implements EpisodeAdapter.OnCl return getArguments().getInt("spanCount"); } - private String getJson() { - return getArguments().getString("json"); - } - public static EpisodeFragment newInstance(int spanCount, List items) { Bundle args = new Bundle(); args.putInt("spanCount", spanCount); - args.putString("json", App.gson().toJson(items)); + args.putParcelableArrayList("items", new ArrayList<>(items)); EpisodeFragment fragment = new EpisodeFragment(); fragment.setArguments(args); return fragment; @@ -66,7 +62,7 @@ public class EpisodeFragment extends BaseFragment implements EpisodeAdapter.OnCl } private void setEpisode() { - mAdapter.addAll(Vod.Flag.Episode.arrayFrom(getJson())); + mAdapter.addAll(getArguments().getParcelableArrayList("items")); mBinding.recycler.setLayoutManager(new GridLayoutManager(getContext(), getSpanCount())); mBinding.recycler.scrollToPosition(mAdapter.getPosition()); }