Ich habe eine TV-App. Ich sehe eine Liste von Kanälen und ich habe es wie eine Reihe gemacht. Aber jetzt möchte ich es umschreiben wie ein Gitter. Ich versuche, Raster-Presenter zu setzen, aber es funktioniert nicht, es sagt, dass ich MainFragmentAdapterProvider implementieren muss. Und alle Tipps aus Tutorials funktionieren nicht, ich kann nicht herausfinden, was ein Problem ist. Vielleicht gibt es einen anderen Moderator dafür?Wie ersetzt man die Liste der Kanäle der Grid-Liste?
public class ChannelsFragment extends RowsFragment implements OnItemViewClickedListener {
private ArrayObjectAdapter mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
//private ArrayObjectAdapter mRowsAdapter;
private IServiceControl mServiceControl;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mServiceControl = ((A4TVTestApp) getActivity().getApplication()).getServiceControl();
setAdapter(mRowsAdapter);
setOnItemViewClickedListener(this);
createRows();
}
private void createRows() {
// VerticalGridPresenter presenter = new VerticalGridPresenter();
// presenter.setNumberOfColumns(4);
// setGridPresenter(presenter);
// setTitle(getString(R.string.scanned_channels));
//
// setOnItemViewClickedListener(this);
//
// try {
// for (int i = 0; i < mServiceControl.getServiceListCount(0); i++) {
// mRowsAdapter.add(mServiceControl.getServiceDescriptor(0, i).getName());
// }
// } catch (RemoteException e) {
// e.printStackTrace();
// }
ChannelsRowItemPresenter presenter = new ChannelsRowItemPresenter();
ArrayObjectAdapter firstRowAdapter = new ArrayObjectAdapter(presenter);
ArrayObjectAdapter secondRowAdapter = new ArrayObjectAdapter(presenter);
ArrayObjectAdapter thirdRowAdapter = new ArrayObjectAdapter(presenter);
ArrayObjectAdapter fourthRowAdapter = new ArrayObjectAdapter(presenter);
try {
int count = mServiceControl.getServiceListCount(0);
for (int i = 0; i < count; i += 4) {
firstRowAdapter.add(mServiceControl.getServiceDescriptor(0, i));
secondRowAdapter.add(mServiceControl.getServiceDescriptor(0, i + 1));
thirdRowAdapter.add(mServiceControl.getServiceDescriptor(0, i + 2));
fourthRowAdapter.add(mServiceControl.getServiceDescriptor(0, i + 3));
}
} catch (RemoteException e) {
e.printStackTrace();
}
mRowsAdapter.add(new ListRow(new HeaderItem(getString(R.string.scanned_channels)),
firstRowAdapter));
mRowsAdapter.add(new ListRow(secondRowAdapter));
mRowsAdapter.add(new ListRow(thirdRowAdapter));
mRowsAdapter.add(new ListRow(fourthRowAdapter));
}
@Override
public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
RowPresenter.ViewHolder rowViewHolder, Row row) {
ServiceDescriptor serviceDescriptor = (ServiceDescriptor) item;
ChannelActivity.startActivity(getActivity(), serviceDescriptor.getLCN());
}
}
Referenzen 1: https: //developer.android.com/reference/android/support/v17/leanback/widget/Presenter.html 2: https: //github.com/googlesamples/androidtv-Leanback/ blob/master/app/src/main/java/com/beispiel/android/tvleanback/presenter/CardPresenter.java 3: https: //developer.android.com/reference/android/support/v17/leanback/widget /ImageCardView.html 4: https://developer.android.com/reference/android/support/v17/leanback/widget/BaseCardView.html 5: https: //developer.android.com/reference/android /support/v17/leanback/widget/PresenterSelector.html – Benjamin