gpt4 book ai didi

Android ListView 预加载行数据

转载 作者:太空狗 更新时间:2023-10-29 15:00:30 25 4
gpt4 key购买 nike

我的应用程序中有一个 Android ListView,我在每一行中显示不同的图像(每行 1 个图像,未定义高度)图像是使用 AsyncTask 从网络加载的,否则它会从缓存中提取它,仅此而已很好。

过程是,我有一个图像的 url,在我的适配器的每个 getView 中(除非在缓存中找到)我触发一个异步任务以使用图像设置我的 ImageView。我给它一个定义的宽度,以适应屏幕(然后我使用这个定义的宽度来缩放高度,所以我知道宽度但在下载和设置它之前不知道高度(或图像的纵横比))

当向下滚动时一切正常,因为 ListView 预加载了 5 行.. 它在我的代码中触发了 5 个下载图像的调用。这使得向下滚动变得顺畅。问题是当我向上滚动时。当我向上滚动时, View 被重用,我知道宽度所以没关系,但最初高度为 0,直到我完全加载图像;当它完全加载时, ImageView 会扩展到任何高度(即 1024),这会使滚动变得不稳定,因为它将 View 从 0 扩展到 1024 并将焦点带回该 View 的顶部...

问题:是否可以将 ListView 设置为预加载向下和向上滚动到特定大小..?所以当向上滚动时,我的 ListView 有 5 行准备显示。我知道这可以通过 android.support.v4.view.ViewPager(默认情况下预加载 +1 和 -1..但可以更改为 +5 和 -5)

最佳答案

据我所知,我认为您应该在扩展了 BaseAdapter 的适配器中覆盖 newView 而不是 getView。不要忘记调用 super.newView

原因是为了避免向上滚动时绑定(bind) View (行)。方法 newView 对每一行调用一次且仅调用一次。 getView 还绑定(bind)了 View ,当您向上滚动时,它会再次加载图像。如果我没记错的话,我想这就是问题所在。

当然,这只有在加载图像后图像不变的情况下才有意义。如果图像应该在上下滚动时动态变化,我猜你被卡住了,但我怀疑情况是否如此。我想您不会保存旧图像/废弃图像的高度。

关于Android ListView 预加载行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27349677/

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