Kopf- und Fußzeile dynamisch hinzufügen / entfernen

8

Ich muss Kopf- und Fußzeilen dynamisch von meinem ListView hinzufügen und entfernen können.

Also initialisiere ich meine Aktivität mit meinen Kopf- und Fußzeilen, dann möchte ich sie irgendwann verstecken, und später muss ich die vorherigen Kopf- und Fußzeilen hinzufügen und dasselbe Adapter beibehalten.

Also habe ich diese Lösung gefunden, aber es ist hässlich und ich hoffe wirklich, dass es einen anderen Weg gibt.
Grundsätzlich muss ich einen Nulladapter festlegen, um die Headeransicht hinzufügen zu können, und einen leeren Adapter festlegen, um die Fußzeilenansicht hinzuzufügen. Zum Abschluss stelle ich meinen richtigen Adapter ein.

Edit: Ich muss hinzufügen, dass die Verwendung des Sichtbarkeitsattributs (GONE & amp; VISIBLE) hier keine Lösung ist, da die Header & amp; Fußzeilenansichten dürfen während meiner Zwischenprozedur nicht im Adapter sein.

%Vor%     
Chayy 29.02.2012, 16:25
quelle

11 Antworten

8

Versuchen Sie nicht, die Kopf- / Fußzeilenansicht hinzuzufügen / zu entfernen.

Um die Kopf- und Fußzeilenansicht dynamisch hinzufügen / entfernen zu können, fügen Sie einfach vor dem Setzen des Adapters ein RelativeLayout zu Kopf- und Fußzeile hinzu. Danach können Sie RelativeLayouts hinzufügen / entfernen, was immer Sie möchten.

Legen Sie die Größe der RelativeLayouts auf WRAP_CONTENT fest.

Harry

    
Harry 19.02.2013 08:50
quelle
6

Sie können den folgenden Code verwenden, um das gleiche zu tun

%Vor%     
Maneesh 29.02.2012 16:36
quelle
2

Sie sollten view.setVisibility(int visibility) View.GONE, View.VISIBLE oder View.INVISIBLE

verwenden %Vor%     
Vyacheslav Shylkin 29.02.2012 16:32
quelle
2

Ich hatte gerade dieses Problem und habe das, was ich getan habe. Fügen Sie der Ansicht ein Tag hinzu und suchen und entfernen Sie es mithilfe des Tags.

%Vor%     
Kevin Kohler 25.11.2014 04:09
quelle
1

Sie müssen Fuß- und Kopfzeilenansichten in der Listenansicht vor dem setAdapter hinzufügen und danach können Sie mit setVisibility

arbeiten

viel Glück;)

    
ademar111190 03.04.2012 16:49
quelle
0

Dies scheint eine der wenigen Lösungen zu sein. Ich habe gerade etwas sehr ähnliches versucht und es hat funktioniert, aber ich bin im selben Boot. Für mich fühlt es sich an wie ein Hack.

Es gibt noch einige andere Optionen, wie das Hinzufügen / Entfernen / Verbergen der Kopf- / Fußzeile in eine Ansicht außerhalb der Listenansicht. Sie können jedoch nicht den schönen Scrolling-Effekt erhalten, der so ziemlich der Sinn eines Listenansicht-Headers ist.

Ich habe gerade versucht, eine Ansicht auf View.GONE zu setzen, und anstelle der Ansicht verschwindet oben im ListView eine Lücke.

    
Joe Plante 29.08.2012 17:33
quelle
0

Ich fand eine Lösung für diese Situation, obwohl die meisten es nicht mögen. Fügen Sie einfach ein lineares Layout oberhalb und unterhalb der Listenansicht hinzu. Jetzt können Sie Ansichten mit der Option, Sichtbarkeitsoptionen zu verwenden, dynamisch hinzufügen und entfernen. Wenn Sie die Parameter auf WRAP_CONTENT setzen, nimmt das Layout keinen Platz ein, wenn keine untergeordneten Elemente vorhanden sind.

    
Slynk 13.09.2012 15:10
quelle
0

Ich habe ein ähnliches Problem - ich musste den Header dynamisch hinzufügen oder entfernen und tat es auf diese Weise:
 - Ich habe Objekte vom Adapter entfernt und adapter=null;
gesetzt  - Zum Entfernen: r emoveHeaderView(mHeaderView);
 - Zum Hinzufügen von Header: addHeaderView(mHeaderView);
 - Erzeuge den Adapter erneut und setze Inhalt auf

Es funktioniert, aber ohne Animation sieht es hässlich aus

    
romeksd 23.07.2014 14:43
quelle
0
%Vor%     
Mobeen Altaf 16.10.2014 15:36
quelle
0

Es ist sehr einfach!

1) Geben Sie und id für den Layout-Container Ihrer Fußzeile ein.

Bsp. footer.xml

%Vor%

In der obigen XML-Datei ist parent_footer_search_list Ihre Haupt-Container-ID. Kommen wir nun zu Ihrem Fragment / Ihrer Aktivität zurück, wo Sie diese Fußzeile aufgeblasen haben. Um es zu entfernen,

%Vor%

Fertig! Auf diese Weise verwenden Sie korrekte Android-Standards. Nicht mit wrap_content, Sichtbarkeit GONE, etc. Sie sind nur Hacks!

    
Abhilash 12.07.2015 07:09
quelle
-1

Verwenden Sie list.addFooterView (footerview) für die Fußzeile und list.addHeaderView (headerview) für die Kopfzeile.

    
Anand.B 13.08.2014 05:33
quelle

Tags und Links