TV 앱이 있습니다. 나는 채널 목록을보고 그것을 행처럼 만들었다. 하지만 지금은 그리드처럼 재 작성하고 싶습니다. 그리드 발표자를 설정하려고하지만 MainFragmentAdapterProvider를 구현해야한다고 작동하지 않습니다. 그리고 자습서의 모든 팁이 제대로 작동하지 않습니다. 문제가 무엇인지 파악할 수 없습니다. 어쩌면 다른 발표자가 있을까요?채널 목록을 그리드 목록으로 바꾸는 방법은 무엇입니까?
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());
}
}
참고 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/example/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