在 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 项目的主要内容,如果未能解决你的问题,请参考以下文章

使用 ListView-Adapter 预加载更多视图

如何在ListView末尾添加“更多”按钮以加载更多项目?

Android - ListView 在到达结束时加载更多项目[关闭]

探索SwipeRefreshLayout配合自定义ListView完成下拉刷新滑到底部自动加载更多

在listview中向下滚动时如何加载更多项?

Andorid上拉加载更多的几种实现方式