Wie alle Kinder (sichtbar und unsichtbar) aus einer ListView?
Mein problem ist ähnlich ListView getChildAt null zurückgeben für die Kinder sichtbar, aber trotz Suche habe ich nicht finden können, eine Lösung.
Ich habe eine ListView
mit einer Schriftrolle. Die ListView
hat 10 Elemente, 7 von denen sind sichtbar und 3 werden ausgeblendet, indem Sie die Navigationstaste. Ich habe auch eine externe Methode (von-adapter), müssen alle Kinder aus dieser ListView
(z.B. mit getChildAt()
).
Muss ich alle 10 Elemente, aber die letzten 3 sind null
Objekte. Ich habe versucht, einen code wie den folgenden:
getListView().smoothScrollToPosition();
Aber das funktioniert nicht.
Ich denke, dass brauche ich nicht zu posten, den rest von meinem code, wie die Beschreibung sagt alles?
- Aber das funktioniert nicht. - und es ist normal, dass es nicht funktioniert, da der
ListView
enthält nur die sichtbaren Zeilen, die es nicht schaffen, den Blick für die unsichtbaren Kinder. Warum brauchen Sie den Zugriff auf alleListView
's child-Views? - Jede Zeile enthält eine RadioGroup und eine Schaltfläche, muss ausfüllen durch den Benutzer. Alle Zeilen sind erforderlich.
- Sie nähert sich dies der falsche Weg. Die Aktion durch den Benutzer sollte reflektiert werden, in das die Daten des Adapters und von dort aus sollten Sie den status des
RadioGroup
. - Das ist richtig. Ich werde es jetzt versuchen. Dank Luksprog.
- Hallo zusammen, über die immer alle Daten, es ist ok (Externe Methode). Nein nullable-Daten. Aber der ListView nicht halten der aktuellen Werte von RadioGroup in der Laufzeit. Ex: Zeile 1: O O * O Zeile 2: O O * O .... Zeile 10: O-O * O, Wenn ich roll-up mit Blättern: Zeile 1: * O O O (Zurück zum Ursprünglichen Wert) ich weiß, das ist über die Listenansicht, die nur die sichtbaren Zeilen auf jeder position, aber ich konnte nicht finden keine Lösung. Irgendwelche Vorschläge? Vielen Dank für die Geduld und Unterstützung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Sie bereits gesehen haben, können Sie nicht alle der untergeordneten Zeile Ansichten von einem
ListView
einfach, weil eineListView
hält nur den Blick für die sichtbaren Zeilen(plus einige Recycling-Zeilen, aber Sie können Sie nicht erreichen kann). Der richtige Weg, das zu tun, was Sie wollen, ist zu speichern, welche Daten in den adapter die Daten und rufen Sie es von dort.Ich habe gesehen, dass du einige Probleme mit diesem, so habe ich angepasst, einige alte code zum erstellen eines basic-Beispiel-code, können Sie hier finden.
Ich glaube nicht, so müssen Sie die scroll-view für ein listView. Scrollen funktioniert automatisch auf die Listenansicht. Versuchen Sie, Ihre Anwendung, ohne hinzufügen scrollen Sie Ansicht, und ich bin sicher, es wird so funktionieren, wie Sie gebraucht werden.
Den nicht sichtbaren Kinder eine listView, die eigentlich gar nicht existieren. Wenn Sie sichtbar wird, eine der redundanten Ansichten Recycling oder eine neue Ansicht generiert wird. So kann man eigentlich nicht den Zugriff auf alle Ansichten. Warum wollen Sie das? Was auch immer änderungen, die Sie machen wollen sollte gemacht werden, um die Daten, füllt die Ansichten, anstatt den Blick auf sich.
getView()
aufgerufen wird, die position wieder, die Sie wiederherstellen können, die der Staat mit diesen Daten.Der Grund, diese Kinder sind null, weil Sie wirklich nicht existieren und nie existieren wird, wenn auch nur 7 Kinder sind auf dem Bildschirm gleichzeitig, das system wird nur 7 und re-use durch die übergabe der
convertView
zurück zu der adaptergetView()
Methode.Wenn Sie möchten, schnappen Sie sich Informationen über Ihre gesamte dataset sollten Sie die Suche auf den Datenbestand selbst, anstatt den Blick auf dem Bildschirm. E. g. wenn es einen ArrayAdapter, Schleife das array; wenn es ein CursorAdapter, Schleife den cursor, etc.
Gibt es ein paar Punkt, den Sie brauchen zu kümmern:
1. Die Liste Ansicht enthält eingebaute scroll-Funktionalität, Also nicht mit Scroll-Ansicht. Es wird nur die Dinge Durcheinander.
2. Ansicht Liste enthält nicht ALLE Kinder. Wenn Sie einen Bildlauf durchführen, es erzeugt nur sichtbare Elemente zur Laufzeit.
3. Wenn Sie möchten, bekommen alle Kinder zusammen, halten Sie Besser eine ArrayList mit Objekten, die Ihrer Liste hat. Sie können hinzufügen oder entfernen Sie Kinder, um diese ArrayList wie pro Anforderung.