I am using my custom fragment instead of the RowsFragment in my Android TV app which implements the leanback library. The custom fragment consists of two equally sized horizontal LinearLayouts (upper and lower halves of the screen) in a FrameLayout. The lower part displays a grid of cards using a VerticalGridPresenter.
What I want to accomplish is to update the views on the upper part of the screen when the user navigates between the cards. I can do so by using the methods below. However, I would like to know whether it would be a better/cleaner approach to update the upper part of the fragment (screen) using another presenter. (ActualShowInformationPresenter) How can I add a second presenter to the ArrayObjectAdapter instance? Would that be the correct approach? Thanks in advance.
private void gridOnItemSelected(int position) {
if (position != mSelectedPosition) {
mSelectedPosition = position;
Channel c = (Channel) mAdapter.get(position);
//ActualShowInformationPresenter actualShowInformationPresenter = new ActualShowInformationPresenter();
Context context = getMainFragmentAdapter().getFragment().getContext();
if (c.getProgramme()!= null)
tvActualShowTitle.setText(c.getProgramme().get(0).getTitle().get(0));
}
}
}
...
private OnItemViewSelectedListener mOnItemViewSelectedListener = new OnItemViewSelectedListener() {
@Override
public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) {
int position = mGridViewHolder.getGridView().getSelectedPosition();
Log.v(TAG, "grid selected position " + position);
gridOnItemSelected(position);
}
};
...
public void setGridPresenter(VerticalGridPresenter gridPresenter) {
if (gridPresenter == null) {
throw new IllegalArgumentException("Grid presenter may not be null");
}
mGridPresenter = gridPresenter;
mGridPresenter.setOnItemViewSelectedListener(mOnItemViewSelectedListener);
if (mOnItemViewClickedListener != null) {
mGridPresenter.setOnItemViewClickedListener(mOnItemViewClickedListener);
}
}
...
private void setupAdapter() {
VerticalGridPresenter presenter = new VerticalGridPresenter(ZOOM_FACTOR);
presenter.setNumberOfColumns(COLUMNS);
setGridPresenter(presenter);
CardPresenter cardPresenter = new CardPresenter();
mAdapter = new ArrayObjectAdapter(cardPresenter);
setAdapter(mAdapter);
}