layoutmanager.FindFirstCompletelyVisibleItemPosition始终返回-1

Ahm*_*aba 7 android android-recyclerview linearlayoutmanager

我的android项目中有一个recyclerview,它在每个视图中显示媒体内容.我想要实现的是,当我向上和向下滚动时,我能够播放/暂停媒体.我需要获得完全可见视图的适配器位置.我正在做这样的事情.

在我的活动片段中我有这个:

        layoutmanager = new LinearLayoutManager(Activity);

        adapter = new FeedAdapter(vid, userName, this.Context);

        feeditem.SetLayoutManager(layoutmanager);
        feeditem.SetAdapter(adapter);

        var onScrollListener = new XamarinRecyclerViewOnScrollListener(Activity, layoutmanager, adapter);
Run Code Online (Sandbox Code Playgroud)

滚动侦听器事件如下所示:

public override void OnScrollStateChanged(RecyclerView recyclerView, int newState)
    {
        base.OnScrollStateChanged(recyclerView, newState);

        if (newState == (int)ScrollState.Idle)
        {
            layoutmanager = (LinearLayoutManager)recyclerView.GetLayoutManager();

            int firstVisiblePosition = layoutmanager.FindFirstCompletelyVisibleItemPosition();
            int visible = layoutmanager.FindFirstVisibleItemPosition();
            int last = layoutmanager.FindLastVisibleItemPosition();
            if (firstVisiblePosition >= 0)
            {
                if (oldFocusedLayout != null)
                {
                    Toast.MakeText(ctx, "Stop Video", ToastLength.Long).Show();
                }


            }
            currentFocusedLayout = layoutmanager.FindViewByPosition(firstVisiblePosition);

            Toast.MakeText(ctx, "Play video", ToastLength.Long).Show();

            oldFocusedLayout = currentFocusedLayout;

        }
    }

        feeditem.AddOnScrollListener(onScrollListener);
Run Code Online (Sandbox Code Playgroud)

问题是,FindFirstCompletelyVisibleItemPosition即使视图完全可见,linearlayout管理器方法也始终返回-1.其他方法一样FindFirstVisibleItemPosition,并FindLastVisibleItemPosition给出了观点的正确位置.

知道这可能是什么问题吗?

Jon*_*put 5

布局管理器.findFirstCompletelyVisibleItemPosition()

来自文件

返回第一个完全可见视图的适配器位置。此位置不包括在最后一次布局传递后调度的适配器更改。

这意味着,至少一个列表项视图应该完全可见,否则,它给出 -1 (NO_POSITION)

来自测试

这将起作用并给出正确的位置......

完全可见的列表项视图

这不起作用并给出 -1 (NO_POSITION),因为两个 ListItem 视图不完全可见。

在此输入图像描述