我正在尝试创建一个类似于 Youtube 应用程序的 Android 电视应用程序。我正在使用Sofa https://github.com/dextorer/Sofa库来做到这一点。现在,当我尝试显示中各个项目的标题时,问题就出现了RowsFragment
即使当RowsFragment
没有焦点。以下是将数据集加载到 browserFragment 中的代码
private void loadRowsCustom() {
adapter = new ArrayObjectAdapter();
int split = 3;
int rowsFragmentCount = videoList.size() / split + (videoList.size() % split != 0 ? 1 : 0);
for (int i = 0; i < rowsFragmentCount; i++) {
ListRowPresenter lrp = new ListRowPresenter(FocusHighlight.ZOOM_FACTOR_LARGE);
ArrayObjectAdapter rowsAdapter = new ArrayObjectAdapter(lrp);
String category = "Category";
for (int j = 0; j < split && (i * split + j) < videoList.size(); j++) {
Video[] videos = videoList.get(i * split + j);
ArrayObjectAdapter rowCollAdapter = new ArrayObjectAdapter(new VideoPresenter());
rowCollAdapter.addAll(0, Arrays.asList(videos));
ListRow row = new ListRow(new HeaderItem(videos[0].category),rowCollAdapter);
rowsAdapter.add(row);
category = videos[0].category;
}
ArrayObjectAdapter fragmentAdapter = new ArrayObjectAdapter();
RowsSupportFragment rowsSupportFragment = new RowsSupportFragment();
rowsSupportFragment.setAdapter(rowsAdapter);
rowsSupportFragment.enableRowScaling(false);
fragmentAdapter.add(rowsSupportFragment);
adapter.add(new ListRow(new HeaderItem(category), fragmentAdapter));
}
browseSupportFragment.setAdapter(adapter);
browseSupportFragment.setHeadersState(BrowseSupportFragment.HEADERS_ENABLED);
browseSupportFragment.setOnSearchClickedListener(searchClickListener);
browseSupportFragment.setOnItemViewClickedListener(browseClickListener);
browseSupportFragment.setTitle("Google Videos");
}
所需的和当前的实现如下面的屏幕截图所示:
正如 Mayur Kaul 已经提到的,你只需要打电话
mRowsFragment.setExpand(true)
但在这种情况下,每次onAttachedToWindow(...)
方法将被调用(参见android.support.v17.leanback.app.RowsFragment
- ItemBridgeAdapter.AdapterListener mBridgeAdapterListener
),无论如何你的标题标题都会被隐藏。
所以最终的解决方案,女巫为我工作,只是简单地覆盖setExpand()
RowsFragment 实现中的方法如下:
@Override
public void setExpand(boolean expand) {
super.setExpand(true);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)