From 2e639cba6a0e0ae80ccac85224fc047c5a536163 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 13 Jul 2022 17:50:14 +0800 Subject: [PATCH] Fix episode select bug --- .../main/java/com/fongmi/bear/bean/Vod.java | 14 +++++++++- .../bear/ui/activity/DetailActivity.java | 26 ++++++++++++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/fongmi/bear/bean/Vod.java b/app/src/main/java/com/fongmi/bear/bean/Vod.java index a6c264242..c2b598206 100644 --- a/app/src/main/java/com/fongmi/bear/bean/Vod.java +++ b/app/src/main/java/com/fongmi/bear/bean/Vod.java @@ -120,6 +120,14 @@ public class Vod { return episodes; } + public void deactivated() { + for (Episode item : getEpisodes()) item.deactivated(); + } + + public void setActivated(Episode episode) { + for (Episode item : getEpisodes()) item.setActivated(episode); + } + public static class Episode { private final String name; @@ -143,7 +151,11 @@ public class Vod { return activated; } - public void setActivated(Episode item) { + private void deactivated() { + this.activated = false; + } + + private void setActivated(Episode item) { this.activated = item.equals(this); } } diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java index 0b2820c59..6719cefb6 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java @@ -68,11 +68,7 @@ public class DetailActivity extends BaseActivity implements Player.Callback { mBinding.flag.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() { @Override public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) { - if (mOldView != null) mOldView.setActivated(false); - if (child == null) return; - mOldView = child.itemView; - mOldView.setActivated(true); - setEpisode((Vod.Flag) mFlagAdapter.get(position)); + setFlagActivated(child, position); } }); mBinding.group.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() { @@ -82,8 +78,7 @@ public class DetailActivity extends BaseActivity implements Player.Callback { } }); mEpisodePresenter.setOnClickListener(item -> { - for (int i = 0; i < mEpisodeAdapter.size(); i++) ((Vod.Flag.Episode) mEpisodeAdapter.get(i)).setActivated(item); - mEpisodeAdapter.notifyArrayItemRangeChanged(0, mEpisodeAdapter.size()); + setEpisodeActivated(item); getPlayer(mEpisodePresenter.getFlag(), item.getUrl()); }); mBinding.frame.setOnClickListener(view -> { @@ -140,6 +135,23 @@ public class DetailActivity extends BaseActivity implements Player.Callback { else view.setText(ResUtil.getString(resId, text)); } + private void setFlagActivated(RecyclerView.ViewHolder child, int position) { + if (mOldView != null) mOldView.setActivated(false); + if (child == null) return; + mOldView = child.itemView; + mOldView.setActivated(true); + setEpisode((Vod.Flag) mFlagAdapter.get(position)); + } + + private void setEpisodeActivated(Vod.Flag.Episode item) { + for (int i = 0; i < mFlagAdapter.size(); i++) { + Vod.Flag flag = (Vod.Flag) mFlagAdapter.get(i); + if (mBinding.flag.getSelectedPosition() == i) flag.setActivated(item); + else flag.deactivated(); + } + mEpisodeAdapter.notifyArrayItemRangeChanged(0, mEpisodeAdapter.size()); + } + private void setEpisode(Vod.Flag item) { mEpisodeAdapter.clear(); mEpisodePresenter.setFlag(item.getFlag());