[mobile] use Parcelable

pull/137/head
FongMi 2 years ago
parent 0ab9512049
commit dd1ee6e3c6
  1. 47
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  2. 10
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.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<Vod> arrayFrom(String str) {
Type listType = new TypeToken<List<Vod>>() {
}.getType();
Type listType = new TypeToken<List<Vod>>() {}.getType();
List<Vod> 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<Episode> arrayFrom(String str) {
Type listType = new TypeToken<List<Episode>>() {}.getType();
List<Episode> 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<Episode> 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<Episode> {
public static List<Episode> sort(List<Episode> items) {

@ -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<Vod.Flag.Episode> 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());
}

Loading…
Cancel
Save