|
|
|
|
@ -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()); |
|
|
|
|
|