首页 文章

在BrowseFragment Android TV中检查 Headers 项焦点

提问于
浏览
0

构建我的第一个Android TV应用程序并且有点困惑 .

我正在使用androidTV-leanback库 .

The root problem: 我有两个功能 . 一个用于返回上一个片段(使用 popBackStackImmediate(); ),另一个用于 creatingLayout(); . 两者都有效,但布局比我返回MainFragment(我可以看到导航抽屉)更快,这使得一个很大的延迟 .

My solution (in thoughts): 当我得到特定导航抽屉 Headers 项的焦点时,我可以简单地调用 creatingLayout(); .

Question: 是否可以获得 Headers 项焦点(项目名称/某种ID) - 按功能/插入您的解决方案?

我想知道每个用户移动活动 Headers 项名称/ ID . 例如 - “第3类” .

https://i.imgur.com/YMv6JjU.png

这是正确思考我的问题吗?也许我可以使用另一种方法?

2 回答

  • 0

    如果我正确理解你的问题,你想知道用户选择的特定类别 . 在这种情况下,您可以检查您在主片段中设置的选定侦听器,如下所示:

    private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
        @Override
        public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
                                   RowPresenter.ViewHolder rowViewHolder, Row row) {
            ListRow listRow = (ListRow)row;
            if(listRow.getId() == 4)
            {
                //do something
            }
        }
    }
    

    你可以在将listrows添加到BrowserFragment ArrayAdpator时设置id,然后像我上面说的那样检查它 .

    希望能帮助到你 :)

  • 0

    当HeadersFragment项(导航菜单项)通过在BrowseFragment中设置侦听器获得焦点时,您可以收到回调:

    getHeadersSupportFragment().setOnHeaderViewSelectedListener(
        new HeadersSupportFragment.OnHeaderViewSelectedListener() {
            @Override
            public void onHeaderSelected(RowHeaderPresenter.ViewHolder viewHolder, Row row) {
                Toast.makeText(getActivity(), row.getHeaderItem().getName(), Toast.LENGTH_LONG).show();
            }
        }
    );
    

相关问题