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

时间:2016-06-24 01:32:36

标签: android android-recyclerview

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

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

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是屏幕上当前可见的视图数量,如以下内容:

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

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

1 个答案:

答案 0 :(得分:21)

我使用以下内容获得了回收商视图中每件商品的完美xy

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