gpt4 book ai didi

android - ListView 和可变高度项目导致滚动问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:15 25 4
gpt4 key购买 nike

我有一个 ListView 用于滚动字段列表、文本和照片。 两个高度都是动态的: TextView 可以包含很长的段落或只是一个句子,并且图像会缩放以适合宽度,因此高度是可变的(您可以看到照片)。有些项目甚至没有图像。 enter image description here这使得元素的高度非常不均匀。有一个项目可以有 2 个屏幕长,而另一个只有一行文本。

我让它工作等等。但是当我向上滚动时,由于在顶部插入了回收 View ,滚动位置会跳到大约新 child 的大小。向下滚动完美...

我或多或少理解为什么,显然回收 View 的大小完全不同,这使得某些滚动算法失败,无论它在哪里。

我已经阅读了有关覆盖 itemType()itemTypeCount 的内容,但我不知道它是否与我的问题有关。在我所做的测试中,它没有(神奇地)起作用。

这可以很容易地修复吗,这里那里有任何技巧或魔法 requestLayout 吗?

有人建议写一个 View 回收器来解决这个问题:问题 listview scrolls quite junky when therre are different row heights

编写一个View recycler 会像听起来那么复杂吗?

抱歉这个抽象的问题..

最佳答案

只需记住 ImageView 和 TextView 的高度,然后当您的 View 被回收时,通过 ListAdapter 中的 getView 方法设置这些 View 的高度(为此您需要扩展 BaseAdapter)。

所以你有一个对象列表和你的数据(一些文本,可能是图像 URL 等)。添加一个名为 imageHeight 的整数字段。第一次加载列表项的图像时,将 ImageView 的高度保存到与该列表项关联的数据对象中的整数字段。然后,在您的 ListAdapter 的 getView 中,将 ImageView 的高度设置为 imageHeight 的值。

这将使您的适配器返回一个具有适当高度的 View 。当然,这仅在您已经知道要加载的图像/文本的高度时才有效。如果您向上滚动,这将是正确的,因为这些项目已经加载。

关于android - ListView 和可变高度项目导致滚动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com