2017-08-17 4 views
0

Folgendes Szenario:Zugriff auf Klassenattribut nach getChildAt()

Ich erstellen eine Klasse 'exampleClass' mit einer aufgeblähten Ansicht. Die Klasse hat ein Attribut 'String A' mit einem entsprechenden Getter.

Ich erstelle eine Instanz dieser Klasse. Keine Überraschung für mich, dass ich beide Log.v(LOG_TAG, instance.toString()); gefolgt von Log.v(LOG_TAG, instance.getA()); aufrufen kann, was zu den richtigen Ausgaben führt.

Ich füge diese Instanz einer ViewGroup namens Container hinzu. Dann rufe ich container.getChildAt(0).toString() an. Das gibt mir wie erwartet, die gleiche Ausgabe wie oben mit Log.v(LOG_TAG, instance.toString());, kein Unterschied.

Was nicht funktioniert, ist container.getChildAt(0).getSideA (oder jedes andere Mitglied) zu rufen. Es sind nur Methoden verfügbar, die zur aufgeblähten Ansicht gehören.

Gibt es eine Möglichkeit, Zugriff auf Attribute und Mitglieder zu erhalten? Andere Hintergrundinformationen zu diesem Thema werden ebenfalls geschätzt.

Antwort

0

Umwandeln Sie den Zieltyp auf container.getChildAt(0), bevor Sie die Methode getSideA verwenden.

((TargetClassType) container.getChildAt(0)).getSideA() 
+0

Das ist interessant: Ich dachte bereits über Casting nach. Am Anfang funktionierte das nicht (Android Studio sagte Casting ist redundant, aber kein Zugriff). Es war notwendig, eine Variable zu speichern, dann funktionierte es. Fügen Sie diese Informationen zu Ihrer Lösung hinzu. – Reinmarius

Verwandte Themen