【问题标题】:How to get all Recycler View item view position ( x,y ) in nested scrollview如何在嵌套滚动视图中获取所有 Recycler View 项目视图位置(x,y)
【发布时间】:2019-09-13 03:52:48
【问题描述】:

我必须在回收站视图的左侧绘制一条曲线(连接回收站视图中的所有项目)。但我无法获得回收站视图项目的所有位置来开始绘制我的自定义视图。我试图得到onBindViewHolder 内部的 x,y 位置,但它不起作用(虽然我在 nestedscrollview 内部时它就像一个 tableview)。那么在设置它适配器后如何获取 recyclerview 项目的所有位置

这是我必须做的屏幕截图:https://imgur.com/a/C1jTNKr

【问题讨论】:

  • OnScrollListener里面得到第一个可见item位置和最后一个可见item位置,如果相差大于一个,则计算可见item位置。获得可见项目位置后,从 layoutManager 获取其视图并从视图中计算 X、Y 位置
  • 嗨@RahulKhurana,感谢您的回复。我试图获得X,Y 甚至视图高度,但都归零。任何解决方案?。我的回收器视图在嵌套的滚动视图内
  • 您尝试使用哪种方法获取 X、Y 位置
  • @RahulKhurana 我将它添加到 onBindViewholder 中
  • 使用OnScrollListener方法

标签: android canvas


【解决方案1】:

如果您的 RecyclerView 有数百个项目,您不应该将其放入 NestedScrollView 或尝试一次获取所有项目的任何度量。

原因是:RecyclerView 必须一次性测量所有item 的布局,这与RecyclerView 的目的(需要时计算item 的布局)完全相反,导致性能非常差,非常滞后甚至冻结您的应用程序(如果有大约 1000 个项目)

在您的情况下,我认为您应该尝试在每个 onBindViewHolder() 内绘制行的每个路径作为每个项目的一部分。如果计算每次抽奖的逻辑不太复杂,我认为这是一个可行的解决方案

【讨论】:

  • 谢谢你。我把 recyclerview 放在嵌套里面,因为它不能加载更多,只有 7-10 个项目。我无法得到所有的点 (x,y)项目,因为它已经在第一次加载嵌套滚动视图中的所有视图(它还不可见)。但是@RahulKhurana 给了我一个非常有希望的解决方案。感谢您的回复!!!
猜你喜欢
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
相关资源
最近更新 更多