ListView可以存储多少项?

时间:2011-02-09 11:17:07

标签: android listview listadapter

我是Android编程的新手。我想知道ListView可以存储多少项?我在文档中搜索,但他们没有谈论这个。如果我将很多(可能是10k)的项目放入ListAdapter会对性能产生什么影响呢?

干杯, MK。

5 个答案:

答案 0 :(得分:7)

ListView在Android中虚拟化。实际上,这意味着其中的元素数量没有实际限制。你可以在列表中放入数百万行,它只会为当前可见的行(或更多的顶部)分配内存。

查看有关为AdapterView编写自定义Adapter类的许多教程(ListView扩展了它)。另请查看ListViews上的Google I / O 2010会话;它真的很有用:here

答案 1 :(得分:5)

没有限制,因为ListView仅在项目进入视图时呈现项目,因此在呈现项目时仅关注ListView的数据(尽管它需要知道正确呈现滚动条的项目数量)

Google IO视频非常适合学习ListView http://www.youtube.com/watch?v=wDBM6wVEO70

那就是说,我会问你是否应该加载那么多,因为很明显用户无法全部查看它们并且滚动ListView并且很多项目将非常繁琐。如果是我,我会问一些问题:

  • 列表是否需要最初显示ALL?它能展示最相关的一套吗?最近/最大/最小/最佳/等
  • 不是一次加载所有内容,而是可以在项目页面中加载块吗?因此,例如,您最初加载10-100,当用户到达底部时显示“正在加载更多...”并带有进度旋转图标,然后拉出更多,然后用户可以选择加载多少,以及加载多少滚动他们准备做
  • 您是否应该构建用于过滤项目的UI,以便他们不需要查看10,000个内容?

有关ListView的更多信息 http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ http://developer.android.com/guide/topics/ui/binding.html http://www.androidguys.com/2008/07/14/fancy-listviews-part-one/

答案 2 :(得分:3)

我创建了一个ListView,并使用Integer.MAX_VALUE作为返回到适配器的数字,以获取列表中的项目数。这对ListView的性能没有影响,即使它持有大约20亿个项目。

我认为10k会起作用:P

在这里查看我的答案,详细了解我的意思:How to create a closed (circular) ListView?

答案 3 :(得分:3)

Integer.MAX_VALUE因为它的大部分功能都依赖于int position

答案 4 :(得分:-1)

您有内存限制(特定于设备)。只要您不用尽内存限制,就可以存储任意数量的项目。您可以使用ADT工具来监控应用程序随时使用的内存量。