我想知道如何获取RecyclerView中第n个项目的X或Y位置。如果物品当前处于可见范围内,这很容易做到。但是,当视图当前不在屏幕上时(例如,RecyclerView中的当前可见项目范围是4到7,而我感兴趣的项目是1或10),似乎没有办法获得值。获取RecyclerView中第n个项目的x/y位置
这是我的尝试。我有以下三个方面:
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”显示在屏幕上,我想要得到的X项目“9”,这是目前的/ Y位置关闭屏幕。所以,我试过如下:
int index = 9;
View v = rv.getChildAt(index);
View v2 = llm.getChildAt(index);
不幸的是,v
和v2
为空。它的原因似乎是,而data
大小为10的rv
的childCount和llm
是什么就证明了以下的观点在屏幕上目前显示的号码,:
int count = rv.getChildCount();
int count2 = llm.getChildCount();
两个变量都是4(当前可见的视图数量,即“2”到“5”)。由于recyclerView的大小是4,并且我想查找索引9处的项目,所以我在上面返回null。
你不能,什么是让非可视项目的x/y位置的原因是什么? – pskink
“其原因似乎是,虽然'data'的大小是10,但'rv'和'llm'的childCount是屏幕上当前可见的视图数量。” - 这是正确的,或多或少。如果这些项目的大小相同,则可以通过在屏幕上获取一个位置,并根据位置差异和尺寸进行计算,轻松确定屏幕外的“视图”位置,如果您确实需要的话。 –
@pskink感谢您的评论。如果我说出我需要这些价值的原因,会有帮助吗? – RestInPeace