我想知道如何獲取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