pull/123/head
FongMi 3 years ago
parent ab8efd5a04
commit 01bc900f1c
  1. 42
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java

@ -38,7 +38,7 @@ import java.util.List;
public class VodFragment extends BaseFragment implements CustomScroller.Callback, VodPresenter.OnClickListener {
private HashMap<String, String> mExtend;
private HashMap<String, String> mExtends;
private FragmentVodBinding mBinding;
private CustomScroller mScroller;
private ArrayObjectAdapter mAdapter;
@ -83,7 +83,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
@Override
protected void initView() {
mTypeIds = new ArrayList<>();
mExtend = new HashMap<>();
mExtends = new HashMap<>();
mFilters = Filter.arrayFrom(getFilter());
mBinding.progressLayout.showProgress();
setRecyclerView();
@ -115,7 +115,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
private void setClick(ArrayObjectAdapter adapter, String key, Filter.Value item) {
for (int i = 0; i < adapter.size(); i++) ((Filter.Value) adapter.get(i)).setActivated(item);
adapter.notifyArrayItemRangeChanged(0, adapter.size());
mExtend.put(key, item.getV());
mExtends.put(key, item.getV());
if (isFolder()) refresh(1);
else getVideo();
}
@ -137,7 +137,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
int filterSize = mOpen ? mFilters.size() : 0;
boolean clear = page.equals("1") && mAdapter.size() > filterSize;
if (clear) mAdapter.removeItems(filterSize, mAdapter.size() - filterSize);
mViewModel.categoryContent(getKey(), typeId, page, true, mExtend);
mViewModel.categoryContent(getKey(), typeId, page, true, mExtends);
}
private boolean checkLastSize(List<Vod> items) {
@ -161,31 +161,37 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
mAdapter.addAll(mAdapter.size(), rows);
}
private void addFilter() {
private ListRow getRow(Filter filter) {
FilterPresenter presenter = new FilterPresenter(filter.getKey());
ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenter);
presenter.setOnClickListener((key, item) -> setClick(adapter, key, item));
adapter.setItems(filter.getValue(), null);
return new ListRow(adapter);
}
private void showFilter() {
List<ListRow> rows = new ArrayList<>();
for (Filter filter : mFilters) {
FilterPresenter presenter = new FilterPresenter(filter.getKey());
ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenter);
presenter.setOnClickListener((key, item) -> setClick(adapter, key, item));
adapter.setItems(filter.getValue(), null);
rows.add(new ListRow(adapter));
}
for (Filter filter : mFilters) rows.add(getRow(filter));
mAdapter.addAll(0, rows);
mBinding.recycler.postDelayed(() -> mBinding.recycler.smoothScrollToPosition(0), 50);
}
private void refresh(int num) {
String typeId = mTypeIds.get(mTypeIds.size() - num);
mTypeIds = mTypeIds.subList(0, mTypeIds.size() - num);
getVideo(typeId, "1");
private void hideFilter() {
mAdapter.removeItems(0, mFilters.size());
}
public void toggleFilter(boolean open) {
if (open) addFilter();
else mAdapter.removeItems(0, mFilters.size());
if (open) showFilter();
else hideFilter();
mOpen = open;
}
private void refresh(int num) {
String typeId = mTypeIds.get(mTypeIds.size() - num);
mTypeIds = mTypeIds.subList(0, mTypeIds.size() - num);
getVideo(typeId, "1");
}
public boolean canGoBack() {
return mTypeIds.size() > 1;
}

Loading…
Cancel
Save