X / Y-Positionen des n-ten Elements in RecyclerView erhalten

Ich möchte wissen, wie man die X- oder Y-Position des n-ten Elements in RecyclerView ermittelt. Dies ist einfach zu tun, wenn sich der Artikel derzeit im sichtbaren Bereich befindet. Wenn die Ansicht derzeit nicht auf dem Bildschirm angezeigt wird (z. B. der Bereich der aktuell sichtbaren Elemente in der RecyclerView 4 bis 7, während das Element, an dem ich interessiert bin, beispielsweise 1 oder 10 ist), gibt es anscheinend keine Möglichkeit, dies zu erreichen Wert

Hier ist was ich ausprobiert habe. Ich habe die folgenden drei Felder:

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"};

Ich habe die Elemente "2" bis "5" auf dem Bildschirm angezeigt, und ich möchte die X / Y-Position des Elements "9" abrufen, das derzeit nicht auf dem Bildschirm angezeigt wird. Also habe ich folgendes probiert:

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

Leider beidev undv2 sind null. Der Grund dafür scheint zu sein, dass, während die Größe vondata ist 10, die childCount vonrv undllm ist unabhängig von der Anzahl der derzeit auf dem Bildschirm angezeigten Ansichten. Dies wird durch Folgendes belegt:

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

Beide Variablen sind 4 (die Anzahl der derzeit sichtbaren Ansichten, d. H. "2" bis "5"). Da die Größe des recyclerView 4 ist und ich den Artikel im Index 9 nachschlagen möchte, wird oben null zurückgegeben.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage