Support alist - part 2

pull/137/head
FongMi 3 years ago
parent 084e911cbd
commit 2f12c9ab93
  1. 9
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java
  2. 32
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  3. 7
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java

@ -20,7 +20,6 @@ import androidx.viewpager.widget.ViewPager;
import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Class; import com.fongmi.android.tv.bean.Class;
import com.fongmi.android.tv.bean.Filter;
import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.databinding.ActivityVodBinding; import com.fongmi.android.tv.databinding.ActivityVodBinding;
import com.fongmi.android.tv.ui.fragment.VodFragment; import com.fongmi.android.tv.ui.fragment.VodFragment;
@ -112,10 +111,9 @@ public class VodActivity extends BaseActivity {
} }
private void updateFilter(Class item) { private void updateFilter(Class item) {
if (item.getFilter() != null) { if (item.getFilter() == null) return;
getFragment().toggleFilter(item.toggleFilter().getFilter()); getFragment().toggleFilter(item.toggleFilter().getFilter());
mAdapter.notifyArrayItemRangeChanged(0, mAdapter.size()); mAdapter.notifyArrayItemRangeChanged(0, mAdapter.size());
}
} }
@Override @Override
@ -129,6 +127,7 @@ public class VodActivity extends BaseActivity {
public void onBackPressed() { public void onBackPressed() {
Class item = mResult.getTypes().get(mBinding.pager.getCurrentItem()); Class item = mResult.getTypes().get(mBinding.pager.getCurrentItem());
if (item.getFilter() != null && item.getFilter()) updateFilter(item); if (item.getFilter() != null && item.getFilter()) updateFilter(item);
else if (getFragment().canGoBack()) getFragment().goBack();
else super.onBackPressed(); else super.onBackPressed();
} }

@ -27,7 +27,6 @@ import com.fongmi.android.tv.ui.presenter.FilterPresenter;
import com.fongmi.android.tv.ui.presenter.VodPresenter; import com.fongmi.android.tv.ui.presenter.VodPresenter;
import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.ResUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -43,6 +42,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
private SiteViewModel mViewModel; private SiteViewModel mViewModel;
private CustomScroller mScroller; private CustomScroller mScroller;
private List<Filter> mFilters; private List<Filter> mFilters;
private List<String> mTypeIds;
private String getTypeId() { private String getTypeId() {
return getArguments().getString("typeId"); return getArguments().getString("typeId");
@ -56,10 +56,10 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
return getArguments().getBoolean("folder"); return getArguments().getBoolean("folder");
} }
public static VodFragment newInstance(String typeId, List<Filter> filter, boolean folder) { public static VodFragment newInstance(String typeId, String filter, boolean folder) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString("typeId", typeId); args.putString("typeId", typeId);
args.putString("filter", new Gson().toJson(filter)); args.putString("filter", filter);
args.putBoolean("folder", folder); args.putBoolean("folder", folder);
VodFragment fragment = new VodFragment(); VodFragment fragment = new VodFragment();
fragment.setArguments(args); fragment.setArguments(args);
@ -74,6 +74,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
@Override @Override
protected void initView() { protected void initView() {
mFilters = Filter.arrayFrom(getFilter()); mFilters = Filter.arrayFrom(getFilter());
mTypeIds = new ArrayList<>();
mExtend = new HashMap<>(); mExtend = new HashMap<>();
setRecyclerView(); setRecyclerView();
setViewModel(); setViewModel();
@ -109,19 +110,21 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
private void getVideo() { private void getVideo() {
mScroller.reset(); mScroller.reset();
getVideo("1"); getVideo(getTypeId(), "1");
} }
private void checkPage() { private void checkPage() {
if (mScroller.getPage() != 1 || mAdapter.size() >= 4 || isFolder()) return; if (mScroller.getPage() != 1 || mAdapter.size() >= 4 || isFolder()) return;
mScroller.addPage(); mScroller.addPage();
getVideo("2"); getVideo(getTypeId(), "2");
} }
private void getVideo(String page) { private void getVideo(String typeId, String page) {
if (page.equals("1")) mLast = null;
boolean clear = page.equals("1") && mAdapter.size() > mFilters.size(); boolean clear = page.equals("1") && mAdapter.size() > mFilters.size();
if (clear) mAdapter.removeItems(mFilters.size(), mAdapter.size() - mFilters.size()); if (clear) mAdapter.removeItems(mFilters.size(), mAdapter.size() - mFilters.size());
mViewModel.categoryContent(getTypeId(), page, true, mExtend); mViewModel.categoryContent(typeId, page, true, mExtend);
mTypeIds.add(typeId);
} }
private boolean checkLastSize(List<Vod> items) { private boolean checkLastSize(List<Vod> items) {
@ -166,9 +169,20 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
} }
} }
public boolean canGoBack() {
return mTypeIds.size() > 1;
}
public void goBack() {
String typeId = mTypeIds.get(mTypeIds.size() - 2);
mTypeIds = mTypeIds.subList(0, mTypeIds.size() - 2);
getVideo(typeId, "1");
}
@Override @Override
public void onItemClick(Vod item) { public void onItemClick(Vod item) {
if (item.getVodId().startsWith("msearch:")) onLongClick(item); if (item.getVodTag().equals("folder")) getVideo(item.getVodId(), "1");
else if (item.getVodId().startsWith("msearch:")) onLongClick(item);
else DetailActivity.start(getActivity(), item.getVodId()); else DetailActivity.start(getActivity(), item.getVodId());
} }
@ -182,7 +196,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
public void onLoadMore(String page) { public void onLoadMore(String page) {
if (isFolder()) return; if (isFolder()) return;
mScroller.setLoading(true); mScroller.setLoading(true);
getVideo(page); getVideo(getTypeId(), page);
} }
@Override @Override

@ -72,6 +72,9 @@ public class Vod {
@SerializedName("vod_play_url") @SerializedName("vod_play_url")
private String vodPlayUrl; private String vodPlayUrl;
@SerializedName("vod_tag")
private String vodTag;
@Path("dl") @Path("dl")
@ElementList(entry = "dd", required = false, inline = true) @ElementList(entry = "dd", required = false, inline = true)
private List<Flag> vodFlags; private List<Flag> vodFlags;
@ -132,6 +135,10 @@ public class Vod {
return TextUtils.isEmpty(vodPlayUrl) ? "" : vodPlayUrl; return TextUtils.isEmpty(vodPlayUrl) ? "" : vodPlayUrl;
} }
public String getVodTag() {
return TextUtils.isEmpty(vodTag) ? "" : vodTag;
}
public List<Flag> getVodFlags() { public List<Flag> getVodFlags() {
return vodFlags = vodFlags == null ? new ArrayList<>() : vodFlags; return vodFlags = vodFlags == null ? new ArrayList<>() : vodFlags;
} }

Loading…
Cancel
Save