java - 当它可见时如何在recyclerview中播放视频并在它不可见时立即暂停(滚动)
问题描述
我有一个像facebook一样的异构recyclerview(文本,图像,视频),我已经实现了用于在其中播放视频的exoplayer,它工作正常但是当我滚动播放视频时出现问题,因为它的视频不可见但它的音频继续播放直到完成。我具有与 android 文档(ViewholderClass、adapterclass 和 ActivityClass)建议的相同的 recyclerview 结构... 主类:从 firebase 获取内容,Viewholder 类:检查帖子类型并相应地显示,适配器类:通常的方法绑定数据,简而言之,viewholder 的问题是没有可用的生命周期方法,我无法在适配器类中获取对象引用以将其暂停在 onDetachedFromRecyclerView() 中。我尝试了所有的 stackoverflow 答案,但没有任何效果。
解决方案
所以一步一步解决你的问题
获取屏幕上可见的项目因此要获取屏幕上可见的项目,您可以使用以下方法
int findFirstVisibleItemPosition(); int findFirstCompletelyVisibleItemPosition(); int findLastVisibleItemPosition(); int findLastCompletelyVisibleItemPosition();
通过使用与您的 recyclerview 一起附加的 LayoutManager,例如:
LinearLayoutManager layoutManager = ((LinearLayoutManager)mRecyclerView.getLayoutManager());
int visiblePosition = layoutManager.findFirstCompletelyVisibleItemPosition();
所以现在使用visiblePosition
你可以从适配器获取你的项目
推荐阅读
- visual-studio - 您可以向(TFS)源代码管理资源管理器添加过滤器(基于标签)吗?
- python - Pandas install-导入多数组numpy扩展
- github-api - 从 Github 企业 API 获取日期范围内的问题
- javascript - 在 span 元素中转换 textNode 的子字符串
- java - 将 cURL 转换为 Java 以进行 SOAP 调用
- laravel - Homestead vagrant HTTP 请求来自主机而不是来自来宾的缓慢
- mysql - Mysql多样化结果
- node.js - NodeJS headers on Windows are not installed automatically
- c# - Create a link ad, not connected to a Page:
- r - mutate based of the value of multiple columns