From 18e0c99aff05ae264d5cba6afb2e41e484ad5de8 Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 28 Oct 2022 23:41:14 +0800 Subject: [PATCH] Optimize live group move --- .../android/tv/ui/activity/LiveActivity.java | 29 +++++-------------- .../com/fongmi/android/tv/bean/Group.java | 4 ++- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 7cb391533..9599c882c 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -12,7 +12,6 @@ import androidx.annotation.Nullable; import androidx.leanback.widget.ArrayObjectAdapter; import androidx.leanback.widget.ItemBridgeAdapter; import androidx.leanback.widget.OnChildViewHolderSelectedListener; -import androidx.leanback.widget.VerticalGridView; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; @@ -53,7 +52,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private Runnable mR0; private Runnable mR1; private Runnable mR2; - private Runnable mR3; public static void start(Activity activity) { if (LiveConfig.get().isEmpty()) return; @@ -81,8 +79,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick protected void initView() { mR0 = this::hideUI; mR1 = this::hideInfo; - mR2 = this::setGroupActivated; - mR3 = this::setChannelActivated; + mR2 = this::setChannelActivated; mPlayers = new Players().init(); mHandler = new Handler(Looper.getMainLooper()); mKeyDown = CustomKeyDownLive.create(this); @@ -107,6 +104,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void setRecyclerView() { + mBinding.group.setItemAnimator(null); + mBinding.channel.setItemAnimator(null); mBinding.group.setAdapter(new ItemBridgeAdapter(mGroupAdapter = new ArrayObjectAdapter(new GroupPresenter(this)))); mBinding.channel.setAdapter(new ItemBridgeAdapter(mChannelAdapter = new ArrayObjectAdapter(new ChannelPresenter(this)))); } @@ -150,20 +149,9 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick setUITimer(); } - private void notifyItemChanged(VerticalGridView view, ArrayObjectAdapter adapter) { - if (!view.isComputingLayout()) adapter.notifyArrayItemRangeChanged(0, adapter.size()); - } - - private void setGroupActivated() { - for (int i = 0; i < mGroupAdapter.size(); i++) ((Group) mGroupAdapter.get(i)).setSelected(mGroup); - mChannelAdapter.setItems(mGroup.getChannel(), null); - notifyItemChanged(mBinding.group, mGroupAdapter); - } - private void setChannelActivated() { for (int i = 0; i < mChannelAdapter.size(); i++) ((Channel) mChannelAdapter.get(i)).setSelected(mChannel); - notifyItemChanged(mBinding.channel, mChannelAdapter); - LiveConfig.get().setKeep(mGroup, mChannel); + if (!mBinding.channel.isComputingLayout()) mChannelAdapter.notifyArrayItemRangeChanged(0, mChannelAdapter.size()); getUrl(); } @@ -210,8 +198,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onItemClick(Group item) { if (item.isSelected()) return; - mHandler.removeCallbacks(mR2); - mHandler.postDelayed(mR2, 100); + mChannelAdapter.setItems(mGroup.getChannel(), null); mBinding.channel.setSelectedPosition(mGroup.getPosition()); } @@ -223,9 +210,9 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void setChannel(Channel item) { - mChannel = item; - mHandler.removeCallbacks(mR3); - mHandler.postDelayed(mR3, 100); + mHandler.removeCallbacks(mR2); + mHandler.postDelayed(mR2, 100); + LiveConfig.get().setKeep(mGroup, mChannel = item); showInfo(); } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Group.java b/app/src/main/java/com/fongmi/android/tv/bean/Group.java index b312eb189..b1eea9546 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Group.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Group.java @@ -27,7 +27,9 @@ public class Group { public Group(String name) { this.name = name; - if (name.contains("_")) setPass(name.split("_")[1]); + if (!name.contains("_")) return; + setName(name.split("_")[0]); + setPass(name.split("_")[1]); } public List getChannel() {