[mobile] support filter init

pull/137/head
FongMi 2 years ago
parent 76e6310e73
commit f6f8829d3e
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  2. 49
      app/src/main/java/com/fongmi/android/tv/bean/Cate.java
  3. 7
      app/src/main/java/com/fongmi/android/tv/bean/Class.java
  4. 8
      app/src/main/java/com/fongmi/android/tv/bean/Filter.java
  5. 4
      app/src/main/java/com/fongmi/android/tv/bean/Value.java
  6. 6
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  7. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VodActivity.java
  8. 11
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java
  9. 4
      app/src/mobile/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());
}
}

@ -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<Cate> CREATOR = new Creator<>() {
@Override
public Cate createFromParcel(Parcel source) {
return new Cate(source);
}
@Override
public Cate[] newArray(int size) {
return new Cate[size];
}
};
}

@ -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<String, String> getExtend() {
HashMap<String, String> 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;

@ -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());
}

@ -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);
}

@ -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());

@ -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() {

@ -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<Page> mPages;
private Page mPage;
public static TypeFragment newInstance(String key, String typeId, boolean folder) {
public static TypeFragment newInstance(String key, String typeId, HashMap<String, String> 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<String, String> getExtend() {
Serializable extend = getArguments().getSerializable("extend");
return extend == null ? new HashMap<>() : (HashMap<String, String>) 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();
}

@ -147,6 +147,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
private Result handle(Result result) {
List<Class> 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

Loading…
Cancel
Save