Ich habe eine listview mit einigen Gegenstände, die als "erledigt" markiert. Es gibt auch einen togglebutton, der sagt "hide done-items".
Allerdings, wenn ich tun ist ausblenden die Elemente, die durch die Einstellung setVisibility(View.WEG) es ist noch Platz in der Liste..
Sollte nicht schwer sein zu wechseln Liste von Elementen in einem listview?
InformationsquelleAutor Peter Berkenbosch | 2011-10-27
Ändern android:layout_height="wrap_content" android:layout_height="fill_parent" wurde das Problem behoben.. war der Test mit einer langen Liste.. mit einer kurzen Liste den gleichen Platz war oben in der Liste.. Blöder Fehler..
Danke an alle für die Hilfe.. alles funktioniert jetzt.
nicht funktionieren, füllen Eltern.
InformationsquelleAutor Peter Berkenbosch
Sind Sie versuchen zu verbergen die ganze Liste posten? Wenn so denke ich, dass die Listen-Ansicht nicht mag, weil es immer noch die Berechnung, mit der gleichen Anzahl von Elementen. Ich glaube nicht, dass es einfach ignorieren, weil es Weg ist.
Die saubere Lösung wäre die Rückkehr ein weiteres
getCount
und ignorieren Sie einfach die Elemente, die Sie ausblenden möchten. Oder entfernen von Elementen aus der internen Liste. Rufen SienotifyDataSetChanged
auf den adapter, wenn Sie verändert die Anzahl der Elemente in der Liste.Funktioniert überhaupt nicht.. habe ich wieder die richtige Position und die richtige Anzahl auf der Grundlage der toggle-Status der Schaltfläche. Die Elemente in der Liste sind die richtigen Artikel, aber immer noch eine große Lücke Leerraum existiert.. Könnte es sein, dass die Halter-Klassen sind immer noch da?
notifyDataSetChanged
auslösen der Liste zu nennengetView
für alle Artikel, die mit dem zurückgegebenengetCount
Wert. Dies sollte den trick tun. Aber ich kann dir nicht helfen, da kenne ich keine details. Scheint, wie es ist etwas, was wirklich falsch...Das Teil funktioniert ok, die Höhe der Liste ist nicht "erfrischend", hält noch Platz oben auf der Liste. Wirklich seltsam.
InformationsquelleAutor Knickedi
sollten Sie betreiben auf der Liste-adapter auch...
InformationsquelleAutor Iulia Barbu
Konnte ich lösen dieses problem mithilfe von Knickedi ' s Lösung und die Kommentare unter ihm. Wollte nur zeigen, dass meine relativ vollständige adapter, um ein wenig erläutern.
Habe ich die Klasse StockItem mit Feldern zu halten eine Vielzahl von Daten für eine einzelne Aktie Element. Für die benutzerdefinierte ArrayAdapter, der Konstruktor nimmt die vollständige Liste der StockItems abgerufen aus einer Datenbank-Tabelle, und alle add/remove-Methoden, die ich in der Zukunft auch betreiben auf dieser Liste (mList). Aber ich überschrieb getView(), getCount() zum Lesen aus einer zweiten Liste (mFilteredList) produziert mit der Methode filterList():
filterList(String-Suche) aufgerufen, die eine OnQueryTextListener und entfernt die Liste der Elemente, deren Beschreibungen entsprechen nicht den eingegebenen text.
Im Falle einer großen Liste, filterList() kann ein problem auf dem main-thread, aber das ist irrelevant für diese Frage.
EDIT: Das mit getItem(position) - Methode muss auch überschrieben werden, um das Element zurück, aus mFilteredList.
InformationsquelleAutor Fletcher Johns
Nach der überprüfung viele Lösungen, von denen keines gelöst wurde mein Problem mit dem leeren Raum, also beschloss ich kam mit meiner Lösung.
Hatte ich zwei große Probleme:
1) ich hatte einen leeren Raum, weil der Blick, den ich festlegen seiner Sichtbarkeit vorbei
2) ich hatte auch dividerHeight von 12dp, auch wenn ich das erste Problem gelöst, ich hatte immer noch die Feste Teiler Höhe des listview -
Lösung:
1.1) ich habe eine boolean, um die Daten von der Liste zu Benachrichtigen, die adapter, welche der Elemente, die übersprungen werden
1.2) erstellte ich ein leeres layout zu simulieren "übersprungen Element"
1.3) ich habe mehrere Arten von Ansichten, die in meinem listview-Steuerelement ausgewählten Element, regelmäßige Artikel und jetzt übersprungen Element
nur, wenn das Element übersprungen wird den adapter aufblasen, um ein leeres layout siehe vorherigen Schritt, noch hatte ich die Teiler Höhe Ausgabe
2) Zu beheben Teiler Höhe änderte ich den Teiler Höhe auf 0 statt 12dp,
jedes Element, das nicht übersprungen, fügte ich ein anderes layout mit transparentem hintergrund (der divier Farbe, in meinem Fall sollte transparent sein) und unterer Auffüllbereich des 12dp
zum Beispiel einen meiner Artikel
vielleicht nicht elegant, aber diese Lösung funktionierte für mich
InformationsquelleAutor visionix visionix
Anzeigen.GEGANGEN ist eigentlich die Freigabe Raum, aber die anderen Elemente wurden möglicherweise beschränkt auf Ihren aktuellen Positionen. Dies versuchen. In der benutzerdefinierten layout-Datei (die als anzeigen für die Elemente der Liste),
Angenommen, wenn X das UI-element, das Sie wollen GEGANGEN werden, W ist das element, unten X und Y ist das element über X
In der benutzerdefinierten Layout Ihrer ListView, (Vorausgesetzt, es ist ein relative layout) Befestigen Sie den oberen W an der Unterseite des X. Und befestigen Sie dann die Oberseite des Elements X an der Unterseite des Y.
InformationsquelleAutor Teja Karlapudi