Fix episode select bug

pull/4/head^2
FongMi 3 years ago
parent 26b1a6ba14
commit 2e639cba6a
  1. 14
      app/src/main/java/com/fongmi/bear/bean/Vod.java
  2. 26
      app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.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);
}
}

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

Loading…
Cancel
Save