为了账号安全,请及时绑定邮箱和手机立即绑定

在“回收视图”中获取可见项

在“回收视图”中获取可见项

慕容708150 2019-07-05 13:17:13
在“回收视图”中获取可见项我需要知道哪些元素当前显示在我的回收视图中。没有与OnScrollListener.onScroll(...)方法。我试着和View.getGlobalVisibleRect(...),但那次黑客攻击太丑陋了,而且并不总是奏效。有人有什么想法吗?
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

第一个/最后一个可见子依赖于LayoutManager..如果你用LinearLayoutManagerGridLayoutManager,你可以用

int findFirstVisibleItemPosition();int findFirstCompletelyVisibleItemPosition();int findLastVisibleItemPosition();
int findLastCompletelyVisibleItemPosition();

例如:

GridLayoutManager layoutManager = ((GridLayoutManager)mRecyclerView.getLayoutManager());
int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();

LinearLayoutManager,第一个/最后一个取决于适配器的排序。不要查询来自RecyclerViewLayoutManager可能更喜欢布局更多的项,而不是可见的缓存项。


查看完整回答
反对 回复 2019-07-05
?
弑天下

TA贡献1818条经验 获得超8个赞

最后,我从适配器中的onBindViewHolder事件中找到了一个知道当前项是否可见的解决方案。

关键是方法isViewPartiallyVisibleLayoutManager的。

在适配器中,可以从回收视图获取LayoutManager,从onAttachedToReccyclerView事件。


查看完整回答
反对 回复 2019-07-05
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

你可以用recyclerView.getChildAt()获取每个可见的子节点,并设置一些标记convertview.setTag(index)在这些视图上,适配器代码将帮助您将其与适配器数据关联起来。


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 408 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信