Ich arbeite an einem Chat-Modul in einer App, wo ich möchte, dass die Nachrichten von zwei Teilnehmern gegenläufige Ausrichtung (andere Benutzer links ausgerichtet und meine eigene msg rechtsbündig). Im Moment wird mein Zeilenlayout durch ein statisches Layout xml (mit msg und avatar linksbündig) übergeben. Gibt es eine Möglichkeit, die Ansicht dynamisch zu ändern, oder gibt es eine Möglichkeit, ein alternatives Zeilenlayout für das UI-System zur Laufzeit auszuwählen?
Sie können das in der getView()
-Methode Ihrer ArrayAdapter -Klasse tun (vorausgesetzt, Sie definieren Ihre eigene ArrayAdapter
).
Sie könnten so etwas haben:
%Vor% getView
wird jedes Mal aufgerufen, wenn Sie ListView
ändern (wie beim Scrollen oder wenn neue Elemente hinzugefügt werden), so dass Sie jede Zeile bearbeiten können
wie du willst.
Vergessen Sie nicht, den Array-Adapter von ListView
auf eine Instanz dieser Klasse zu setzen.
1.Die Cusom Adapter-Klasse erweitert den Basisadapter. 2. Überschreiben Sie getItemViewType () und getViewTypeCount () 3. Erweitern Sie eine Ansicht abhängig vom Typ in getView ()
Ein Weg, wie ich es gezeigt habe (ich bin mir nicht sicher, ob es die beste Vorgehensweise ist oder nicht!) ist, beide Ansichten in einer XML-Datei zu haben. Zur Laufzeit können Sie einen Verweis auf jede Ansicht erhalten (mit findViewById) und die visible -Eigenschaft so einstellen, dass sie von der, die Sie nicht wollen, weg ist.
Ich werde versuchen, einen Beispielcode zu finden, wenn das nicht klar ist?