在 listView 上加载更多项目而不是 n+2 项目
Posted
技术标签:
【中文标题】在 listView 上加载更多项目而不是 n+2 项目【英文标题】:Loading more items on the listView instead of n+2 items 【发布时间】:2015-04-13 10:45:30 【问题描述】:我的 android 应用程序上有一个 ListView,在每个列表项中我都有一个包含一些图像的 ViewPager,这些图像是从网络下载的。
listView 的性能并不完美,当 listView 想要显示下一行应用程序在滚动时冻结大约 0.3 秒。我尝试使用 volley 下载图像,也尝试使用 async tasks 下载图像,但应用程序仍然存在同样的问题。
所以我试图找到另一个使用 listView 和 ViewPager 来显示列表视图项内的图像滑块的应用程序,我看到这个应用程序正在列表视图上加载更多行,所以当我滚动行时准备显示并且应用程序是工作正常,但是如果我滚动得如此之快,他们的应用程序会出现与我的应用程序相同的问题。
所以我的问题是:“我应该如何更改加载到列表视图中的默认项目数(屏幕上显示的项目数 + 2)?”。
如果您知道任何其他提高我的列表视图性能的解决方案,请告诉我。
【问题讨论】:
【参考方案1】:对于列表视图中的图像加载,我建议您尝试毕加索图书馆
Get it here
如果您提供适配器代码后性能没有提高到最佳状态
【讨论】:
谢谢,这个库有助于提高性能,现在滚动更流畅,但仍然不像其他应用程序那样正常,还有其他建议吗?【参考方案2】:拥有大量图像并获得更平滑滚动的最佳方法是将 Picasso 与滚动侦听器一起使用。
在某处创建一个 TAG 对象:
public static final Object PICASSO_TAG = new Object();
加载您调用的图像:
Picasso.with(context).load(url).into(imageView);
然后在AbsListView.OnScrollListener
public void onScrollStateChanged(AbsListView view, int scrollState)
if(SCROLL_STATE_IDLE == scrollState)
Picasso.with(context).resumeTag(PICASSO_TAG);
else
Picasso.with(context).pauseTag(PICASSO_TAG);
【讨论】:
谢谢,它帮助提高了性能,但是没有你分享的监听器性能更好,只是使用 Picaso 帮助了我,但是在没有加载图像时 listView 滚动仍然不流畅,之后所有图片加载列表滚动更流畅。 嗨,如果性能不好,您可能在适配器中做的事情不够有效。例如......它只在单元格为空时才设置字体/颜色,而不是在您从标签加载单元格之后。以上是关于在 listView 上加载更多项目而不是 n+2 项目的主要内容,如果未能解决你的问题,请参考以下文章
Android - ListView 在到达结束时加载更多项目[关闭]