Ändern Sie dynamisch das Zeilenlayout einer ListView

8

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?

    
jingyin 15.08.2011, 17:37
quelle

4 Antworten

5

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.

%Vor%     
Amokrane Chentir 15.08.2011 17:53
quelle
5
%Vor%

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 ()

    
Raghunandan 05.09.2012 05:40
quelle
2

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?

    
Robert 15.08.2011 18:09
quelle
0

Mein Code:

%Vor%     
Bipin Bharti 08.04.2016 11:12
quelle

Tags und Links