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.bean.Class;
import com.fongmi.android.tv.bean.Filter;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.databinding.ActivityVodBinding;
import com.fongmi.android.tv.ui.fragment.VodFragment;
@ -112,10 +111,9 @@ public class VodActivity extends BaseActivity {
}
private void updateFilter(Class item) {
if (item.getFilter() != null) {
getFragment().toggleFilter(item.toggleFilter().getFilter());
mAdapter.notifyArrayItemRangeChanged(0, mAdapter.size());
}
if (item.getFilter() == null) return;
getFragment().toggleFilter(item.toggleFilter().getFilter());
mAdapter.notifyArrayItemRangeChanged(0, mAdapter.size());
}
@Override
@ -129,6 +127,7 @@ public class VodActivity extends BaseActivity {
public void onBackPressed() {
Class item = mResult.getTypes().get(mBinding.pager.getCurrentItem());
if (item.getFilter() != null && item.getFilter()) updateFilter(item);
else if (getFragment().canGoBack()) getFragment().goBack();
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.utils.ResUtil;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.HashMap;
@ -43,6 +42,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
private SiteViewModel mViewModel;
private CustomScroller mScroller;
private List<Filter> mFilters;
private List<String> mTypeIds;
private String getTypeId() {
return getArguments().getString("typeId");
@ -56,10 +56,10 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
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();
args.putString("typeId", typeId);
args.putString("filter", new Gson().toJson(filter));
args.putString("filter", filter);
args.putBoolean("folder", folder);
VodFragment fragment = new VodFragment();
fragment.setArguments(args);
@ -74,6 +74,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
@Override
protected void initView() {
mFilters = Filter.arrayFrom(getFilter());
mTypeIds = new ArrayList<>();
mExtend = new HashMap<>();
setRecyclerView();
setViewModel();
@ -109,19 +110,21 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
private void getVideo() {
mScroller.reset();
getVideo("1");
getVideo(getTypeId(), "1");
}
private void checkPage() {
if (mScroller.getPage() != 1 || mAdapter.size() >= 4 || isFolder()) return;
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();
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) {
@ -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
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());
}
@ -182,7 +196,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
public void onLoadMore(String page) {
if (isFolder()) return;
mScroller.setLoading(true);
getVideo(page);
getVideo(getTypeId(), page);
}
@Override

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

Loading…
Cancel
Save