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%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
Sie sollten view.setVisibility(int visibility)
View.GONE, View.VISIBLE oder View.INVISIBLE
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%Sie müssen Fuß- und Kopfzeilenansichten in der Listenansicht vor dem setAdapter hinzufügen und danach können Sie mit setVisibility
arbeitenviel Glück;)
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.
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.
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
Es ist sehr einfach!
1) Geben Sie und id für den Layout-Container Ihrer Fußzeile ein.
Bsp. footer.xml
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!