diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java index f4d40c17d..4b1cf1231 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.ui.fragment; import android.app.Activity; +import android.os.Bundle; import android.view.LayoutInflater; import android.view.ViewGroup; @@ -43,17 +44,20 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call private String mKeyword; public static CollectFragment newInstance(String keyword, Collect collect) { - return new CollectFragment().setKeyword(keyword).setCollect(collect); + Bundle args = new Bundle(); + args.putString("keyword", keyword); + args.putParcelable("collect", collect); + CollectFragment fragment = new CollectFragment(); + fragment.setArguments(args); + return fragment; } - private CollectFragment setKeyword(String keyword) { - this.mKeyword = keyword; - return this; + private String getKeyword() { + return mKeyword = mKeyword == null ? getArguments().getString("keyword") : mKeyword; } - private CollectFragment setCollect(Collect collect) { - this.mCollect = collect; - return this; + private Collect getCollect() { + return mCollect = mCollect == null ? getArguments().getParcelable("collect") : mCollect; } @Override @@ -86,7 +90,7 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call @Override protected void initData() { - addVideo(mCollect.getList()); + addVideo(getCollect().getList()); } private boolean checkLastSize(List items) { @@ -124,8 +128,8 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call @Override public void onLoadMore(String page) { - if (mCollect.getSite().getKey().equals("all")) return; - mViewModel.searchContent(mCollect.getSite(), mKeyword, page); + if (getCollect().getSite().getKey().equals("all")) return; + mViewModel.searchContent(getCollect().getSite(), getKeyword(), page); mScroller.setLoading(true); } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Collect.java b/app/src/main/java/com/fongmi/android/tv/bean/Collect.java index 4d6590ecc..2b433ffff 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Collect.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Collect.java @@ -1,12 +1,15 @@ package com.fongmi.android.tv.bean; +import android.os.Parcel; +import android.os.Parcelable; + import com.fongmi.android.tv.R; import com.fongmi.android.tv.utils.ResUtil; import java.util.ArrayList; import java.util.List; -public class Collect { +public class Collect implements Parcelable { private final Site site; private final List list; @@ -51,4 +54,36 @@ public class Collect { public void setPage(int page) { this.page = page; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(site, flags); + dest.writeList(list); + dest.writeByte(activated ? (byte) 1 : (byte) 0); + dest.writeInt(page); + } + + private Collect(Parcel in) { + site = in.readParcelable(Site.class.getClassLoader()); + in.readList(list = new ArrayList<>(), Vod.class.getClassLoader()); + activated = in.readByte() != 0; + page = in.readInt(); + } + + public static final Creator CREATOR = new Creator<>() { + @Override + public Collect createFromParcel(Parcel source) { + return new Collect(source); + } + + @Override + public Collect[] newArray(int size) { + return new Collect[size]; + } + }; } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Site.java b/app/src/main/java/com/fongmi/android/tv/bean/Site.java index d1eb83c07..ade9560af 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Site.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Site.java @@ -1,5 +1,7 @@ package com.fongmi.android.tv.bean; +import android.os.Parcel; +import android.os.Parcelable; import android.text.TextUtils; import androidx.annotation.NonNull; @@ -18,7 +20,7 @@ import java.util.Collections; import java.util.List; @Entity(ignoredColumns = {"type", "api", "playUrl", "timeout", "playerType", "ext", "jar", "style", "categories"}) -public class Site { +public class Site implements Parcelable { @NonNull @PrimaryKey @@ -77,6 +79,9 @@ public class Site { return site; } + public Site() { + } + public String getKey() { return TextUtils.isEmpty(key) ? "" : key; } @@ -240,4 +245,60 @@ public class Site { Site it = (Site) obj; return getKey().equals(it.getKey()); } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.key); + dest.writeString(this.name); + dest.writeValue(this.type); + dest.writeString(this.api); + dest.writeString(this.playUrl); + dest.writeValue(this.timeout); + dest.writeValue(this.playerType); + dest.writeValue(this.searchable); + dest.writeValue(this.filterable); + dest.writeValue(this.changeable); + dest.writeValue(this.recordable); + dest.writeString(this.ext); + dest.writeString(this.jar); + dest.writeParcelable(this.style, flags); + dest.writeStringList(this.categories); + dest.writeByte(this.activated ? (byte) 1 : (byte) 0); + } + + private Site(Parcel in) { + this.key = in.readString(); + this.api = in.readString(); + this.ext = in.readString(); + this.jar = in.readString(); + this.name = in.readString(); + this.playUrl = in.readString(); + this.activated = in.readByte() != 0; + this.categories = in.createStringArrayList(); + this.style = in.readParcelable(Vod.Style.class.getClassLoader()); + this.type = (Integer) in.readValue(Integer.class.getClassLoader()); + this.timeout = (Integer) in.readValue(Integer.class.getClassLoader()); + this.playerType = (Integer) in.readValue(Integer.class.getClassLoader()); + this.searchable = (Integer) in.readValue(Integer.class.getClassLoader()); + this.filterable = (Integer) in.readValue(Integer.class.getClassLoader()); + this.changeable = (Integer) in.readValue(Integer.class.getClassLoader()); + this.recordable = (Integer) in.readValue(Integer.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator<>() { + @Override + public Site createFromParcel(Parcel source) { + return new Site(source); + } + + @Override + public Site[] newArray(int size) { + return new Site[size]; + } + }; } 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 9e1d74f59..e73077133 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 @@ -1,5 +1,7 @@ package com.fongmi.android.tv.bean; +import android.os.Parcel; +import android.os.Parcelable; import android.text.TextUtils; import android.view.View; @@ -488,10 +490,10 @@ public class Vod { } } - public static class Style { + public static class Style implements Parcelable { @SerializedName("type") - private final String type; + private String type; @SerializedName("ratio") private Float ratio; @@ -554,5 +556,33 @@ public class Vod { Style it = (Style) obj; return getType().equals(it.getType()) && getRatio().equals(it.getRatio()); } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.type); + dest.writeValue(this.ratio); + } + + private Style(Parcel in) { + this.type = in.readString(); + this.ratio = (Float) in.readValue(Float.class.getClassLoader()); + } + + public static final Creator