From f3cf59fab147df1bd550b90249d9a233c94c270d Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 15 Sep 2022 21:25:56 +0800 Subject: [PATCH] Clean code --- .../android/tv/ui/activity/VodActivity.java | 46 ++++++++++++------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java index 99d9fa49b..e6fc6a496 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java +++ b/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 getNewTypes() { + List 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 newTypes = new ArrayList<>(); - for (String cate : ApiConfig.get().getHome().getCategories()) { - for (Class type : mResult.getTypes()) { - if (cate.equals(type.getTypeName())) newTypes.add(type); - } - } + List 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());