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 rowObject itemArrayObjectAdapter 中获取所需的所有信息,这些信息在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

【讨论】:

感谢您的回答!但是没有RowgetArrayAdapter ()类的方法。 我刚刚进行了编辑以解决此问题。 ListRow 具有 getAdapter() 方法。您可能希望将演员表包装在instanceof 检查中以确保安全,但基于此行:mRowsAdapter.add(new ListRow(header, listRowAdapter));,您应该是安全的。 一切正常!非常感谢!更正了if 块中变量索引的名称。

以上是关于BrowseFragment 行中的最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章

查找与条件匹配的行中的最后一个元素

无法刷新 BrowseFragment 中的数据

Android Leanback 库 BrowseFragment

从 Android TV 中的 BrowseFragment 中删除上边距

在 BrowseFragment 中禁用行缩放/展开

Android TV 在 BrowseFragment 中重新加载数据