ListView und variable Höhe Elemente verursacht Scroll-Probleme

Ich habe eine ListView , die ich verwende, um eine Liste von Feldern, einem Text und einem Foto zu scrollen. Beide Höhen sind dynamisch : Die Textansicht kann einen sehr langen Absatz oder nur einen Satz enthalten, und das Bild wird skaliert, um die Breite zu passen, also ist die Höhe variabel (man sieht das Foto). Einige Artikel haben sogar kein Bild. Bildbeschreibung hier eingeben Das macht die Gegenstände sehr heterogen in der Höhe. Es gibt ein Element, das 2 Bildschirme lang sein kann, während ein anderes nur eine Zeile des Textes.

Ich habe es funktioniert etc .. aber wenn ich nach oben scrollen, da Recycling-Ansichten an der Spitze eingefügt werden, springt die Scroll-Position etwa die Größe des neuen Kindes. Scroll down funktioniert perfekt …

  • ViewHolder-Muster korrekt in benutzerdefiniertem CursorAdapter implementiert?
  • RecyclerViews Zeile ist Shuffling und wechseln Bilder: Android
  • Was ist eine Adapterklasse?
  • Listview mit benutzerdefiniertem Adapter mit CheckBoxes
  • Wie rufe ich eine Methode an, die in einem ListFragment von einem Adapter definiert ist?
  • SetOnItemClickListener reagiert nicht auf benutzerdefinierte ListView
  • Ich verstehe mehr oder weniger, warum, offensichtlich die recycelten Ansichten sind völlig anders in der Größe, und das macht einige Scrolling Algorythmus scheitern, wo immer es auch sein mag.

    Ich habe über das Überschreiben von itemType() und itemTypeCount , aber ich weiß nicht, ob es mit meinem Problem verwandt ist. In den Tests habe ich es nicht (magisch) gearbeitet.

    Kann man das leicht feststellen, irgendwelche Trick- oder Magie-AnfragenLayout hier und da?

    Es gibt einen Kerl, der vorschlägt, einen View Recycler zu schreiben, um dies zu beheben: Frage listview scrollt ziemlich junky, wenn therre verschiedene Zeilenhöhen sind

    Würde ein View recycler schreiben so schrecklich kompliziert wie es klingt?

    Sorry für die abstrakte Frage ..

  • Wie stelle ich den ausgewählten Zustand einer Bildtaste mit xml ein
  • Android HTTP Login Fragen
  • Einen Blick auf die Vorderansicht machen
  • Android SDK Manager Installieren von Komponenten
  • Was ist der Unterschied zwischen Optionsmenü und Panel-Menü in Android?
  • Wie funktioniert die Kotlin-Eigenschaftszugriffssyntax für Java-Klassen?
  • 3 Solutions collect form web for “ListView und variable Höhe Elemente verursacht Scroll-Probleme”

    Erinnern Sie sich einfach an die Höhe der ImageView und der TextView, und dann, wenn Ihre Ansichten recycelt werden, legen Sie die Höhe für diese Ansichten aus der getView-Methode in Ihrem ListAdapter (Sie müssen BaseAdapter dafür erweitern).

    So hast du eine Liste von Objekten mit deinen Daten (etwas Text, vielleicht eine Bild-URL, etc.). Füge ein ganzzahliges Feld mit dem Namen imageHeight hinzu. Wenn Sie das Bild für ein Listenelement zum ersten Mal laden, speichern Sie die Höhe des ImageViews in diesem Integer-Feld in dem Datenobjekt, das diesem Listenelement zugeordnet ist. Dann setzen Sie in getView in Ihrem ListAdapter die Höhe der ImageView auf den Wert von imageHeight.

    Dadurch wird Ihr Adapter eine Ansicht zurückgeben, die die richtige Höhe hat. Natürlich funktioniert das nur, wenn du schon die Höhe des Bildes / Textes kennst, die du laden möchtest. Dies ist wahr, wenn Sie scrollen, da diese Elemente bereits geladen wurden.

    Versuchen Sie, die Bilder (in WeakHashMap) in getView zu cache und dann die Scroll up muss nicht das Bild neu laden, die die hässliche Höhe Neuberechnung verursachen …

    Verwenden Sie nicht die konvertierung der Methode getView (int position, View convertView, ViewGroup parent).

    Sie müssen die Zeile immer aufblasen, sobald die getView aufgerufen wird. Es wird das Scrollen etwas langsam, aber dein Problem wird gelöst werden.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.