android - 获取 RecyclerView 中第 n 个项目的 x/y 位置

标签 android android-recyclerview

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

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

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 位置。所以我尝试了以下方法:

int index = 9;
View v = rv.getChildAt(index);
View v2 = llm.getChildAt(index);

不幸的是,vv2 都是空的。原因似乎是当 data 的大小为 10 时,rvllm 的 childCount 是当前的 View 数在屏幕上可见,如下所示:

int count = rv.getChildCount();
int count2 = llm.getChildCount();

两个变量都是 4(当前可见的 View 数;即“2”到“5”)。由于 recyclerView 的大小为 4,而我想查找索引 9 处的项目,因此上面返回了 null。

最佳答案

我使用以下方法获得了回收站 View 中每个项目的完美 xy:

int[] originalPos = new int[2];
view.getLocationInWindow(originalPos);
//or view.getLocationOnScreen(originalPos)
int x = originalPos[0];
int y = originalPos[1];

关于android - 获取 RecyclerView 中第 n 个项目的 x/y 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38004369/

相关文章:

android - 在 Android 上使用 Pull Parser 解析 RSS2.0 提要

android - 防止 Android 重置

android - 如何使用 Recycle.scrollTo?

java - 我的 Recycler View 的 Adapter 类中的 OnTouch 和 onClick 事件出现问题

android - ConstraintLayout 内容形状在滚动时改变

java - 如何在android中验证警报对话框中的文本框

android - SAX 拉解析器 Android

java - 为什么我的 LinearLayout 表现得像 null

android - Recyclerview notifyDataSetChanged();不工作

java - BottomSheet 中带有多个 ViewHolder 的 Kotlin RecyclerView