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

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

我需要知道哪些元素当前显示在我的回收视图中。没有与OnScrollListener.onScroll(...)方法。我试着和View.getGlobalVisibleRect(...),但那次黑客攻击太丑陋了,而且并不总是奏效。

有人有什么想法吗?


慕容708150
浏览 409回答 3
3回答

慕盖茨4494581

第一个/最后一个可见子依赖于LayoutManager..如果你用LinearLayoutManager或GridLayoutManager,你可以用int findFirstVisibleItemPosition();int findFirstCompletelyVisibleItemPosition();int findLastVisibleItemPosition(); int findLastCompletelyVisibleItemPosition();例如:GridLayoutManager layoutManager = ((GridLayoutManager)mRecyclerView.getLayoutManager()); int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();为LinearLayoutManager,第一个/最后一个取决于适配器的排序。不要查询来自RecyclerView; LayoutManager可能更喜欢布局更多的项,而不是可见的缓存项。

弑天下

最后,我从适配器中的onBindViewHolder事件中找到了一个知道当前项是否可见的解决方案。关键是方法isViewPartiallyVisibleLayoutManager的。在适配器中,可以从回收视图获取LayoutManager,从onAttachedToReccyclerView事件。

德玛西亚99

你可以用recyclerView.getChildAt()获取每个可见的子节点,并设置一些标记convertview.setTag(index)在这些视图上,适配器代码将帮助您将其与适配器数据关联起来。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android