检查物料在RecyclerView中是否完全可见

Ali*_*eza 9 android-scroll android-recyclerview

我正在尝试检查某些特定项目是否可见RecyclerView; 但我无法实现这一点.请帮我确定我的物品是否完全可见RecyclerView.

mrecylerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        LinearLayout ll = (LinearLayout) recyclerView.findChildViewUnder(dx, dy);
        if (ll != null) {
            TextureVideoView tvv = (TextureVideoView) ll.findViewById(R.id.cropTextureView);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我想检查tvv视图是否在视图中完全可见mrecyclerView.

lub*_*lis 12

您可以使用LayoutManager api创建一些逻辑,以在RecyclerView onScrolled方法中获取最后一个完全可见的项目位置:

((LinearLayoutManager) vYourRecycler.getLayoutManager()).findLastCompletelyVisibleItemPosition();
Run Code Online (Sandbox Code Playgroud)

从文档中:返回上一个完全可见视图的适配器位置.此位置不包括在最后一次布局传递后调度的适配器更改.

尝试使用它并通知RecyclerView适配器刷新.

注意:我不知道为什么你在onScrolled方法中使用findViewById,这项工作应该在RecyclerView ViewHolder中实现以获得性能

  • findLastCompletelyVisibleItemPosition(); 给我最后一个附件,是否可见. (2认同)
  • 看起来可以通过在“第一个可见项索引位置”和“最后一个可见项索引位置”之间迭代/循环来获取“所有可见项”,请参阅此处了解更多详细信息:/sf/answers/2477450741/ 3763032 (2认同)