我正在开发一个使用leanback 架构的应用程序,其中某个自定义视图没有使用远程的dpad 聚焦。
自定义视图的 onFocus() 不会在 FireStick 版本 3(Android API 28) 中调用。在较低版本上触发相同的代码(< Android API 28)
自定义视图是一个 ListRow,用于显示由 GenrePresenter 提供数据的电影类型。
genrePresenter = new GenrePresenter(new GenrePresenter.viewListener() {
@Override
public void onClick(View view, String selected) {
((HomeFYCActivity) getActivity()).showAdapter(viewModel.genreList, selected);
}
//THIS DOES NOT GET TRIGGERED ON API 28
@Override
public void onFocus(View view, Boolean hasFocus) {
// NEED TO SET FOCUS HERE
}
}, "ALL GENRES");
header = new HeaderItem("NOW PLAYING");
genreRow = new ListRow(header, genreRowAdapter);
但相反,HeaderItem 获得了焦点。
相同的代码适用于 < Android API 28
远程触控板用于选择其他视图
编辑流派Presenter监听器代码
public interface viewListener {
void onClick(View view, String selected);
void onFocus(View view, Boolean hasFocus);
}
以及我如何调用监听器
((ShowCard) viewHolder).tvGenre.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
viewListener.onFocus(v, hasFocus);
}
});