BrowseFragment 行中的最后一个元素
Posted
技术标签:
【中文标题】BrowseFragment 行中的最后一个元素【英文标题】:The last element in the row BrowseFragment 【发布时间】:2016-10-13 14:26:10 【问题描述】:我有一个片段:
public class FilmFragment extends BrowseFragment implements LoaderManager.LoaderCallbacks<Object>
在 BrowseFragment 我添加了几行项目:
private void loadRubricsFilms(List<Rubric> mRubrics, List<Film> mFilms)
int j = 0;
for (Rubric mRubric : mRubrics)
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(mCardPresenter);
for (Film mFilm : mFilms)
if (mFilm.getRubric() == mRubric.getId())
listRowAdapter.add(mFilm);
HeaderItem header = new HeaderItem(j++, mRubric.getTitle());
mRowsAdapter.add(new ListRow(header, listRowAdapter));
setAdapter(mRowsAdapter);
我安装了 OnItemViewSelectedListener 监听器:
private final class ItemViewSelectedListener implements OnItemViewSelectedListener
@Override
public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
RowPresenter.ViewHolder rowViewHolder, Row row)
setOnItemViewSelectedListener(new ItemViewSelectedListener());
覆盖方法onItemSelected:
@Override
public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
RowPresenter.ViewHolder rowViewHolder, Row row)
我需要检测何时选择了行中的最后一项。如何确定?
【问题讨论】:
不完整的问题,请输入您的完整代码,并更具体地说明您的问题。 添加了有问题的其他方法 【参考方案1】:您可以从Row
上的Row row
、Object item
和ArrayObjectAdapter
中获取所需的所有信息,这些信息在onItemSelected(...)
事件中返回。
类似:
final ListRow listRow = (ListRow) row;
final ArrayObjectAdapter currentRowAdapter = listRow.getAdapter();
int selectedIndex = currentRowAdapter.indexOf(item);
if (selectedIndex != -1 && (currentRowAdapter.size() - 1) == selectedIndex )
// The last item was selected
【讨论】:
感谢您的回答!但是没有Row
getArrayAdapter ()
类的方法。
我刚刚进行了编辑以解决此问题。 ListRow
具有 getAdapter()
方法。您可能希望将演员表包装在instanceof
检查中以确保安全,但基于此行:mRowsAdapter.add(new ListRow(header, listRowAdapter));
,您应该是安全的。
一切正常!非常感谢!更正了if
块中变量索引的名称。以上是关于BrowseFragment 行中的最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章
Android Leanback 库 BrowseFragment