首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取RecyclerView中第n项的x/y位置

获取RecyclerView中第n项的x/y位置
EN

Stack Overflow用户
提问于 2016-06-24 09:32:36
回答 2查看 13.4K关注 0票数 20

我想知道如何在RecyclerView中获得第n项的X或Y位置。如果项目当前在可见范围内,则很容易做到这一点。但是,当视图当前不在屏幕上时(例如,RecyclerView上当前可见的项目范围是4到7,而我感兴趣的项目是1或10),似乎无法获得该值。

这是我尝试过的方法。我有以下三个字段:

代码语言:javascript
复制
private RecyclerView rv;

/* The Layout Manager of rv */
private LinearLayoutManager llm;

/* The data to be shown in the RecyclerView. */
private String[] data = {"0","1","2",...,"9"};

我有项目"2“到"5”显示在屏幕上,我想要获得项目"9“的X/Y位置,它当前不在屏幕上。因此,我尝试了以下方法:

代码语言:javascript
复制
int index = 9;
View v = rv.getChildAt(index);
View v2 = llm.getChildAt(index);

不幸的是,vv2都是空的。

代码语言:javascript
复制
int count = rv.getChildCount();
int count2 = llm.getChildCount();

这两个变量都是4(当前可见的视图数量;即"2“到"5")。由于recyclerView的大小是4,并且我想在索引9处查找该项,因此上面返回的结果为null。

EN

回答 2

Stack Overflow用户

发布于 2016-12-02 14:56:30

我得到了回收器视图中每件物品的完美xy,如下所示:

代码语言:javascript
复制
int[] originalPos = new int[2];
view.getLocationInWindow(originalPos);
//or view.getLocationOnScreen(originalPos)
int x = originalPos[0];
int y = originalPos[1];
票数 45
EN

Stack Overflow用户

发布于 2018-05-13 23:33:19

Pal gajjar的答案是正确的..。你不能获得回收视图的坐标,原因很简单,因为它们还没有被渲染,它们在这一点上还没有被创建。你必须首先使用recyclerview.getChildAt(intValueHere)...if检查视图是否存在它不同于null它意味着它离当前显示的子位置很近,并且它的部分渲染在memory...at中保持了这一点,只有在视图被保持在内存中的时候,你才能使用该视图。你应该阅读回收视图是如何工作的,以及布局管理器是如何回收视图的,以了解到底发生了什么……-> https://developer.android.com/guide/topics/ui/layout/recyclerview

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38004369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档