简体   繁体   English

检查BrowseFragment Android TV中的标题项焦点

[英]Check header item focus in BrowseFragment Android TV

Building my first Android TV application and got kinda confused. 构建我的第一个Android TV应用程序时有点困惑。

I'm using androidTV-leanback library. 我正在使用androidTV-leanback库。

The root problem: I've two functions. 根本问题是:我有两个功能。 One is for getting back to previous fragment (using popBackStackImmediate(); ) and other one for creatingLayout(); 一种是返回上一片段(使用popBackStackImmediate(); ),另一种用于creatingLayout(); . Both work, but the layout is made alot faster than I return to MainFragment (where I can see navigation drawer) which makes a BIG DELAY . 两者都可以工作,但是布局的制作速度比我回到MainFragment(可以在其中看到导航抽屉)的速度快得多,MainFragment使BIG DELAY更大。

My solution (in thoughts): I could simply call creatingLayout(); 我的解决方案(在思想上):我可以简单地调用creatingLayout(); when I get the focus of specific navigation drawer header item. 当我得到特定导航抽屉标题项目的焦点时。

Question: Is it possible to get a header item focus (items name/some kind of an id) - by function/ insert your solution ? 问题:是否有可能获得标题项目的焦点(项目名称/某种ID)-按功能/ 插入解决方案

I want to know on every user movement active header items name/id. 我想知道每个用户活动的活动标题项的名称/ ID。 For instance - "Category 3". 例如-“类别3”。

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

Is this correct way of thinking about my problem? 这是思考我的问题的正确方法吗? Maybe there's another approach I could use? 也许我可以使用另一种方法?

You can receive a callback when a HeadersFragment item (the nav menu item) gains focus by setting a listener inside the BrowseFragment: 通过在BrowseFragment中设置侦听器,当HeadersFragment项目(导航菜单项)获得焦点时,您会收到回调:

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

if i understand your question correctly that you want to know when a specific category selected by user. 如果我正确理解您的问题,您想知道用户何时选择了特定类别。 in this case you can check in selected listener that you set in main fragment like this: 在这种情况下,您可以像这样检查签入在主片段中设置的选定侦听器:

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
        }
    }
}

you can set id when add your listrows to BrowserFragment ArrayAdpator then check it like i said above. 您可以在将列表行添加到BrowserFragment ArrayAdpator时设置id,然后像我上面所述检查它。

hope it helps :) 希望能帮助到你 :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM