RecyclerViewのn番目の項目のXまたはY位置を取得する方法を知りたいと思います。アイテムが現在可視範囲内にある場合、これは簡単に実行できます。しかし、ビューが現在スクリーンから外れているとき(例えば、RecyclerView上の現在表示されているアイテムの範囲が4から7で、関心のある項目が1または10であるなど)、それを得る方法がないようです値。RecyclerViewのn番目の項目のx/y位置を取得する
ここに私が試したことがあります。私は次の3つのフィールドがあります。
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);
は残念ながら、v
とv2
の両方がnullです。
int count = rv.getChildCount();
int count2 = llm.getChildCount();
両方の変数がある:data
の大きさは、以下によって証明されるようrv
とllm
のchildCountは、どのようなビューの数は、現在表示画面上で、10であることと思われる理由4(現在表示されているビューの数、つまり「2」から「5」)。 recyclerViewのサイズは4で、インデックス9のアイテムを検索したいので、上に返されたnullが返されます。
することはできません、何で非表示項目のX/Y位置を取得するための理由は? – pskink
"' data'のサイズは10ですが、 'rv'と' llm'のchildCountは、現在画面に表示されているビュー数に関係なくです。 " - これは正しい、多かれ少なかれ。アイテムがすべて同じサイズであれば、本当に必要な場合はオフスクリーンの「表示」の位置を簡単に判別できます。画面上の位置を取得し、位置の差と寸法から計算します。 –
@pskinkコメントありがとうございました。私がそれらの価値を必要とする理由を言うなら、それは助けになるでしょうか? – RestInPeace