pull/137/head
FongMi 4 years ago
parent 2a6c8db868
commit f3cf59fab1
  1. 46
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java

@ -2,6 +2,8 @@ package com.fongmi.android.tv.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
@ -36,6 +38,7 @@ public class VodActivity extends BaseActivity {
private ActivityVodBinding mBinding;
private ArrayObjectAdapter mAdapter;
private PageAdapter mPageAdapter;
private Handler mHandler;
private Result mResult;
private View mOldView;
@ -58,6 +61,7 @@ public class VodActivity extends BaseActivity {
@Override
protected void initView() {
mHandler = new Handler(Looper.getMainLooper());
mResult = Result.fromJson(getResult());
setRecyclerView();
setTypes();
@ -75,11 +79,7 @@ public class VodActivity extends BaseActivity {
mBinding.recycler.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() {
@Override
public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) {
mBinding.pager.setCurrentItem(position);
if (mOldView != null) mOldView.setActivated(false);
if (child == null) return;
mOldView = child.itemView;
mOldView.setActivated(true);
onChildSelected(child);
}
});
}
@ -90,19 +90,17 @@ public class VodActivity extends BaseActivity {
mBinding.recycler.setAdapter(new ItemBridgeAdapter(mAdapter = new ArrayObjectAdapter(new TypePresenter(this::updateFilter))));
}
private List<Class> getNewTypes() {
List<Class> types = new ArrayList<>();
for (String cate : ApiConfig.get().getHome().getCategories()) for (Class type : mResult.getTypes()) if (cate.equals(type.getTypeName())) types.add(type);
return types;
}
private void setTypes() {
List<Class> newTypes = new ArrayList<>();
for (String cate : ApiConfig.get().getHome().getCategories()) {
for (Class type : mResult.getTypes()) {
if (cate.equals(type.getTypeName())) newTypes.add(type);
}
}
List<Class> newTypes = getNewTypes();
if (newTypes.size() > 0) mResult.setTypes(newTypes);
if (ApiConfig.get().getHome().isFilterable()) {
for (Class item : mResult.getTypes()) {
if (mResult.getFilters().containsKey(item.getTypeId())) item.setFilter(false);
}
}
Boolean filter = ApiConfig.get().getHome().isFilterable() ? true : null;
for (Class item : mResult.getTypes()) if (mResult.getFilters().containsKey(item.getTypeId())) item.setFilter(filter);
mAdapter.setItems(mResult.getTypes(), null);
}
@ -110,6 +108,22 @@ public class VodActivity extends BaseActivity {
mBinding.pager.setAdapter(mPageAdapter = new PageAdapter(getSupportFragmentManager()));
}
private void onChildSelected(@Nullable RecyclerView.ViewHolder child) {
mHandler.removeCallbacks(mRunnable);
mHandler.postDelayed(mRunnable, 200);
if (mOldView != null) mOldView.setActivated(false);
if (child == null) return;
mOldView = child.itemView;
mOldView.setActivated(true);
}
private final Runnable mRunnable = new Runnable() {
@Override
public void run() {
mBinding.pager.setCurrentItem(mBinding.recycler.getSelectedPosition());
}
};
private void updateFilter(Class item) {
if (item.getFilter() == null) return;
getFragment().toggleFilter(item.toggleFilter().getFilter());

Loading…
Cancel
Save