[leanback] fix focus

pull/137/head
FongMi 3 years ago
parent 3d563f9d80
commit 337ad28dfe
  1. 10
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/ArrayPresenter.java

@ -106,6 +106,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private ArrayObjectAdapter mPartAdapter;
private ActivityDetailBinding mBinding;
private QualityAdapter mQualityAdapter;
private ArrayPresenter mArrayPresenter;
private PartPresenter mPartPresenter;
private CustomKeyDownVod mKeyDown;
private ExecutorService mExecutor;
@ -325,7 +326,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mBinding.quality.setAdapter(mQualityAdapter = new QualityAdapter(this::setQualityActivated));
mBinding.array.setHorizontalSpacing(ResUtil.dp2px(8));
mBinding.array.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
mBinding.array.setAdapter(new ItemBridgeAdapter(mArrayAdapter = new ArrayObjectAdapter(new ArrayPresenter(this))));
mBinding.array.setAdapter(new ItemBridgeAdapter(mArrayAdapter = new ArrayObjectAdapter(mArrayPresenter = new ArrayPresenter(this))));
mBinding.part.setHorizontalSpacing(ResUtil.dp2px(8));
mBinding.part.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
mBinding.part.setAdapter(new ItemBridgeAdapter(mPartAdapter = new ArrayObjectAdapter(mPartPresenter = new PartPresenter(item -> initSearch(item, false)))));
@ -486,7 +487,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mBinding.episode.setVisibility(items.isEmpty() ? View.GONE : View.VISIBLE);
mEpisodeAdapter.setItems(items, null);
setArray(items.size());
updateFocus();
}
private void seamless(Flag flag, boolean force) {
@ -536,8 +536,12 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
}
private void updateFocus() {
mArrayPresenter.setNextFocusUp(isVisible(mBinding.quality) ? R.id.quality : R.id.episode);
mPartPresenter.setNextFocusUp(isVisible(mBinding.array) ? R.id.array : isVisible(mBinding.quality) ? R.id.quality : R.id.episode);
mEpisodePresenter.setNextFocusDown(isVisible(mBinding.quality) ? R.id.quality : isVisible(mBinding.array) ? R.id.array : R.id.part);
mPartPresenter.setNextFocusUp(isVisible(mBinding.quality) ? R.id.quality : isVisible(mBinding.array) ? R.id.array : R.id.episode);
notifyItemChanged(mBinding.episode, mEpisodeAdapter);
notifyItemChanged(mBinding.array, mArrayAdapter);
notifyItemChanged(mBinding.part, mPartAdapter);
}
@Override

@ -17,6 +17,7 @@ public class ArrayPresenter extends Presenter {
private final String backward;
private final String forward;
private final String reverse;
private int nextFocus;
public ArrayPresenter(OnClickListener listener) {
this.mListener = listener;
@ -32,6 +33,10 @@ public class ArrayPresenter extends Presenter {
void onRevPlay(TextView view);
}
public void setNextFocusUp(int nextFocus) {
this.nextFocus = nextFocus;
}
@Override
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) {
return new ViewHolder(AdapterArrayBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
@ -42,6 +47,7 @@ public class ArrayPresenter extends Presenter {
ViewHolder holder = (ViewHolder) viewHolder;
String text = object.toString();
holder.binding.text.setText(text);
holder.binding.text.setNextFocusUpId(nextFocus);
if (text.equals(reverse)) setOnClickListener(holder, view -> mListener.onRevSort());
else if (text.equals(backward) || text.equals(forward)) setOnClickListener(holder, view -> mListener.onRevPlay(holder.binding.text));
else setOnClickListener(holder, null);

Loading…
Cancel
Save