In einem horizontalen LinearLayout (die Bildschirmbreite entspricht), habe ich zwei ListView-Instanzen (mit dynamischen Listenelementen) und eine TextView dazwischen. Mit dem TextView als Canvas möchte ich (Bezier) Linien zeichnen, die entweder das ausgewählte Listenelement im linken ListView mit allen Listenelementen im rechten ListView verbinden oder umgekehrt. Nun ist es durchaus möglich, dass entweder das ausgewählte Listenelement oder irgendeines der Listenelemente auf der anderen Seite außerhalb des sichtbaren Bereichs des ListViews liegt. In diesem Fall würde ich diese Linien (von oben/unten kommend oder oben/unten) nur so weit zeichnen, wie sie sichtbar sind. Um diese Linien zu zeichnen, brauche ich am Anfang und am Ende jeder Linie x- und y-Werte. x ist nur textView.getLeft() und textView.getRight(), aber y hängt von der aktuellen Bildlaufposition der beiden Listen ab.How to getY() für ListView-Elemente
Mein Problem ist es, die aktuellen y-Werte für bestimmte Listview-Elemente zu erhalten:
list.getChildAt(indexOfCurrentlySelectedItem).getY()
ich diese Werte zugreifen müssen, sobald die Liste geführt gelegt hat. Ich muss bestimmen, welche Listenelemente und welche Listenelemente nicht sichtbar sind. (Haben die nicht sichtbaren Listenelemente einen y-Wert? Eine Ansicht? Eine wiederverwendbare Ansicht (unter Verwendung des Haltermusters)?). Ich muss in der Lage sein, eine Liste zu durchlaufen, die ich bestelle, um diese y-Werte an meine onDraw-Methode der TextView zu übergeben. Und schließlich muss ich einen Mechanismus installieren, um die Zeilen nach dem Scrollen neu zu zeichnen.
Wie bekomme ich die aktuellen y-Werte (nach dem Layout und nach dem Scrollen)? Muss ich die sichtbaren Positionen in einem OnScrollListener verfolgen? Muss ich in einem OnGlobalLayoutListener auf das Ende des Listenlayouts warten? Muss ich (auch) für jedes Listenelement auf das Ende des Layouts der Listenelemente in einem OnGlobalLayoutListener achten?