Optimize vod display style

pull/137/head
FongMi 3 years ago
parent c56814369a
commit 705e2ea9b5
  1. 42
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  2. 12
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  3. 23
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java

@ -69,7 +69,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
}
private String getTypeId() {
return getArguments().getString("typeId");
return mPages.isEmpty() ? getArguments().getString("typeId") : getLastPage().getVodId();
}
private String getFilter() {
@ -139,19 +139,6 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
getVideo(getTypeId(), "1");
}
private void checkPosition() {
if (mPage != null && mPage.getPosition() > 0) mBinding.recycler.hideHeader();
if (mPage != null && mPage.getPosition() < 1) mBinding.recycler.showHeader();
if (mPage != null) mBinding.recycler.setSelectedPosition(mPage.getPosition());
else if (isFolder() && !mOpen) mBinding.recycler.moveToTop();
mPage = null;
}
private void checkPage(int count) {
if (count == 0 || mAdapter.size() >= 4 || isFolder()) return;
getVideo(getTypeId(), String.valueOf(mScroller.addPage()));
}
private void getVideo(String typeId, String page) {
boolean first = page.equals("1");
if (first) mLast = null;
@ -163,11 +150,23 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
}
private void addVideo(List<Vod> items) {
if (isFolder()) {
mAdapter.addAll(mAdapter.size(), items);
} else {
addGrid(items);
}
if (items.isEmpty()) return;
boolean list = isFolder() || mPages.size() > 0 && items.get(0).isFile();
if (list) mAdapter.addAll(mAdapter.size(), items);
else addGrid(items);
}
private void checkPosition() {
if (mPage != null && mPage.getPosition() > 0) mBinding.recycler.hideHeader();
if (mPage != null && mPage.getPosition() < 1) mBinding.recycler.showHeader();
if (mPage != null) mBinding.recycler.setSelectedPosition(mPage.getPosition());
else if (isFolder() && !mOpen) mBinding.recycler.moveToTop();
mPage = null;
}
private void checkPage(int count) {
if (count == 0 || mAdapter.size() >= 4 || isFolder()) return;
getVideo(getTypeId(), String.valueOf(mScroller.addPage()));
}
private boolean checkLastSize(List<Vod> items) {
@ -226,8 +225,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
}
public void onRefresh() {
if (mPages.isEmpty()) getVideo();
else getVideo(getLastPage().getVodId(), "1");
getVideo();
}
public boolean canGoBack() {
@ -242,7 +240,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
@Override
public void onItemClick(Vod item) {
if (item.isFolder()) {
if (item.isFolder() || item.isCover()) {
mPages.add(Page.get(item.getVodId(), mBinding.recycler.getSelectedPosition()));
mBinding.recycler.setMoveTop(false);
getVideo(item.getVodId(), "1");

@ -193,6 +193,10 @@ public class Vod {
return getVodTag().equals("folder");
}
public boolean isCover() {
return getVodTag().equals("cover");
}
public boolean isFile() {
return getVodTag().equals("file");
}
@ -228,6 +232,14 @@ public class Vod {
}
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!(obj instanceof Vod)) return false;
Vod it = (Vod) obj;
return getVodId().equals(it.getVodId());
}
public static class Flag {
@Attribute(name = "flag", required = false)

@ -54,7 +54,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
}
private String getTypeId() {
return getArguments().getString("typeId");
return mPages.isEmpty() ? getArguments().getString("typeId") : getLastPage().getVodId();
}
private boolean isFolder() {
@ -103,18 +103,19 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
private void setRecyclerView() {
mBinding.recycler.setHasFixedSize(true);
mBinding.recycler.setAdapter(mAdapter = new VodAdapter(this));
mBinding.recycler.setLayoutManager(isFolder() ? new LinearLayoutManager(getActivity()) : new GridLayoutManager(getContext(), Product.getColumn()));
mAdapter.setViewType(isFolder() ? ViewType.FOLDER : ViewType.GRID);
mAdapter.setSize(Product.getSpec(getActivity()));
}
private void setViewType(boolean list) {
}
private void setViewModel() {
mViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mViewModel.result.observe(getViewLifecycleOwner(), this::setAdapter);
}
private void getVideo() {
mPages.clear();
mScroller.reset();
getVideo(getTypeId(), "1");
}
@ -132,10 +133,19 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
mBinding.swipeLayout.setRefreshing(false);
mScroller.endLoading(size == 0);
mAdapter.addAll(result.getList());
addVideo(result.getList());
checkPosition();
checkPage(size);
}
private void addVideo(List<Vod> items) {
if (items.isEmpty()) return;
boolean list = isFolder() || mPages.size() > 0 && items.get(0).isFile();
mBinding.recycler.setLayoutManager(list ? new LinearLayoutManager(getActivity()) : new GridLayoutManager(getContext(), Product.getColumn()));
mAdapter.setViewType(list ? ViewType.FOLDER : ViewType.GRID);
mAdapter.addAll(items);
}
private void checkPosition() {
if (mPage != null) scrollToPosition(mPage.getPosition());
else if (isFolder()) mBinding.recycler.scrollToPosition(0);
@ -172,8 +182,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
@Override
public void onRefresh() {
if (mPages.isEmpty()) getVideo();
else getVideo(getLastPage().getVodId(), "1");
getVideo();
}
@Override
@ -185,7 +194,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
@Override
public void onItemClick(Vod item) {
if (item.isFolder()) {
if (item.isFolder() || item.isCover()) {
mPages.add(Page.get(item.getVodId(), findPosition()));
getVideo(item.getVodId(), "1");
} else {

Loading…
Cancel
Save