diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 8f56f098d..7cab08a62 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -146,7 +146,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback if (filter.getInit() == null) continue; Value value = new Value(filter.getInit()); int index = filter.getValue().indexOf(value); - filter.getValue().get(index).setActivated(value); + filter.getValue().get(index).setActivated(true); mExtends.put(filter.getKey(), filter.getInit()); } } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Cate.java b/app/src/main/java/com/fongmi/android/tv/bean/Cate.java new file mode 100644 index 000000000..f65bdf671 --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/bean/Cate.java @@ -0,0 +1,49 @@ +package com.fongmi.android.tv.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +import com.google.gson.annotations.SerializedName; + +public class Cate implements Parcelable { + + @SerializedName("land") + private int land; + + public Cate() { + } + + public int getLand() { + return land; + } + + public void setLand(int land) { + this.land = land; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.land); + } + + protected Cate(Parcel in) { + this.land = in.readInt(); + } + + public static final Creator CREATOR = new Creator<>() { + @Override + public Cate createFromParcel(Parcel source) { + return new Cate(source); + } + + @Override + public Cate[] newArray(int size) { + return new Cate[size]; + } + }; +} 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 b686411ab..6cb3d7053 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 @@ -13,6 +13,7 @@ import org.simpleframework.xml.Text; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; @Root(strict = false) @@ -100,6 +101,12 @@ public class Class implements Parcelable { this.typeName = Trans.s2t(typeName); } + public HashMap getExtend() { + HashMap extend = new HashMap<>(); + for (Filter filter : getFilters()) if (filter.getInit() != null) extend.put(filter.getKey(), filter.setActivated(filter.getInit())); + return extend; + } + @Override public boolean equals(Object obj) { if (this == obj) return true; 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 3f3d05a9a..d25af34d1 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 @@ -55,6 +55,12 @@ public class Filter implements Parcelable { return value == null ? Collections.emptyList() : value; } + public String setActivated(String v) { + int index = getValue().indexOf(new Value(v)); + if (index != -1) getValue().get(index).setActivated(true); + return v; + } + public Filter trans() { if (Trans.pass()) return this; for (Value value : getValue()) value.trans(); @@ -70,12 +76,14 @@ public class Filter implements Parcelable { public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.key); dest.writeString(this.name); + dest.writeString(this.init); dest.writeList(this.value); } protected Filter(Parcel in) { this.key = in.readString(); this.name = in.readString(); + this.init = in.readString(); this.value = new ArrayList<>(); in.readList(this.value, Value.class.getClassLoader()); } 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 10585a46a..b36481e51 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 @@ -44,6 +44,10 @@ public class Value implements Parcelable { return activated; } + public void setActivated(boolean activated) { + this.activated = activated; + } + public void setActivated(Value item) { this.activated = item.equals(this); } 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 3899273a4..63b65f396 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 @@ -73,7 +73,7 @@ public class Vod implements Parcelable { private String vodTag; @SerializedName("cate") - private Object cate; + private Cate cate; @SerializedName("style") private Style style; @@ -157,7 +157,7 @@ public class Vod implements Parcelable { return TextUtils.isEmpty(vodTag) ? "" : vodTag; } - public Object getCate() { + public Cate getCate() { return cate; } @@ -276,6 +276,7 @@ public class Vod implements Parcelable { dest.writeString(this.vodPlayFrom); dest.writeString(this.vodPlayUrl); dest.writeString(this.vodTag); + dest.writeParcelable(this.cate, flags); dest.writeParcelable(this.style, flags); dest.writeTypedList(this.vodFlags); dest.writeParcelable(this.site, flags); @@ -295,6 +296,7 @@ public class Vod implements Parcelable { this.vodPlayFrom = in.readString(); this.vodPlayUrl = in.readString(); this.vodTag = in.readString(); + this.cate = in.readParcelable(Cate.class.getClassLoader()); this.style = in.readParcelable(Style.class.getClassLoader()); this.vodFlags = in.createTypedArrayList(Flag.CREATOR); this.site = in.readParcelable(Site.class.getClassLoader()); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VodActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VodActivity.java index 1728b8ea0..4cff7b186 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VodActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VodActivity.java @@ -13,6 +13,8 @@ import com.fongmi.android.tv.databinding.ActivityVodBinding; import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.fragment.TypeFragment; +import java.util.HashMap; + public class VodActivity extends BaseActivity { private ActivityVodBinding mBinding; @@ -43,7 +45,7 @@ public class VodActivity extends BaseActivity { Result result = getResult(); Class type = result.getTypes().get(0); mBinding.text.setText(type.getTypeName()); - getSupportFragmentManager().beginTransaction().replace(R.id.container, TypeFragment.newInstance(getKey(), type.getTypeId(), type.getTypeFlag().equals("1")), "0").commitAllowingStateLoss(); + getSupportFragmentManager().beginTransaction().replace(R.id.container, TypeFragment.newInstance(getKey(), type.getTypeId(), new HashMap<>(), type.getTypeFlag().equals("1")), "0").commitAllowingStateLoss(); } private TypeFragment getFragment() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index dfda727fc..e2595c904 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -27,6 +27,7 @@ import com.fongmi.android.tv.ui.adapter.VodAdapter; import com.fongmi.android.tv.ui.base.BaseFragment; import com.fongmi.android.tv.ui.custom.CustomScroller; +import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -41,11 +42,12 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac private List mPages; private Page mPage; - public static TypeFragment newInstance(String key, String typeId, boolean folder) { + public static TypeFragment newInstance(String key, String typeId, HashMap extend, boolean folder) { Bundle args = new Bundle(); args.putString("key", key); args.putString("typeId", typeId); args.putBoolean("folder", folder); + args.putSerializable("extend", extend); TypeFragment fragment = new TypeFragment(); fragment.setArguments(args); return fragment; @@ -59,6 +61,11 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac return mPages.isEmpty() ? getArguments().getString("typeId") : getLastPage().getVodId(); } + private HashMap getExtend() { + Serializable extend = getArguments().getSerializable("extend"); + return extend == null ? new HashMap<>() : (HashMap) extend; + } + private boolean isFolder() { return getArguments().getBoolean("folder"); } @@ -91,8 +98,8 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac @Override protected void initView() { mScroller = new CustomScroller(this); - mExtends = new HashMap<>(); mPages = new ArrayList<>(); + mExtends = getExtend(); setRecyclerView(); setViewModel(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 8321f8787..260e9049b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -147,6 +147,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal private Result handle(Result result) { List types = new ArrayList<>(); + for (Class type : result.getTypes()) if (result.getFilters().containsKey(type.getTypeId())) type.setFilters(result.getFilters().get(type.getTypeId())); for (String cate : getSite().getCategories()) for (Class type : result.getTypes()) if (Trans.s2t(cate).equals(type.getTypeName())) types.add(type); result.setTypes(types); return result; @@ -155,7 +156,6 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal private void setAdapter(Result result) { mAdapter.addAll(handle(result)); mBinding.pager.getAdapter().notifyDataSetChanged(); - for (Class item : mAdapter.getTypes()) if (result.getFilters().containsKey(item.getTypeId())) item.setFilters(result.getFilters().get(item.getTypeId())); setFabVisible(0); hideProgress(); checkRetry(); @@ -301,7 +301,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal @Override public Fragment getItem(int position) { Class type = mAdapter.get(position); - return TypeFragment.newInstance(getSite().getKey(), type.getTypeId(), type.getTypeFlag().equals("1")); + return TypeFragment.newInstance(getSite().getKey(), type.getTypeId(), type.getExtend(), type.getTypeFlag().equals("1")); } @Override