首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android ListView预加载行数据

问Android ListView预加载行数据
EN

Stack Overflow用户
提问于 2014-12-08 08:37:52
回答 1查看 812关注 0票数 3

我在我的应用程序中有一个Android ListView,我在每行显示不同的图像(每行1张图像,高度未定义)这些图像是使用AsyncTask从web加载的,否则它会从缓存中拉出,所以一切都很好。

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

向下滚动时一切正常,因为列表视图预加载了5行。它发出5个调用来下载我代码中的图像。这使得向下滚动变得流畅。问题是当我向上滚动的时候。当我向上滚动时,视图被重用,我知道一个宽度,所以这没问题,但最初高度是0,直到我完全加载图像;当它完全加载时,图像视图扩展到任何高度(即1024),这使得滚动断断续续,因为它将视图从0扩展到1024,并将焦点带回该视图的顶部……

问:是否可以将列表视图设置为预加载向上和向下滚动到特定大小。?因此,当向上滚动时,我的ListView有大约5行可以显示。我知道使用android.support.v4.view.ViewPager可以做到这一点(默认情况下,它预加载+1和-1..but,可以更改为+5和-5)

EN

回答 1

Stack Overflow用户

发布于 2014-12-08 08:50:08

我认为您应该在适配器中覆盖newView,而不是getView,据我所知,它扩展了BaseAdapter。别忘了给super.newView打电话。

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

当然,只有当你加载图片后,图片没有变化,这才有意义。如果图片是动态变化的,同时上下滚动,我猜你会卡住,但我怀疑情况是这样的。我假设你不会保存旧的/丢弃的图片的高度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27349677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档