2011-02-09 91 views
11

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

干杯, MK。

+0

_I会建议你一定要阅读this_ ** [文章](http://android.amberfog.com/?p = 296)** – 2011-02-09 11:59:47

回答

-1

您有一个内存限制(这是设备特定的)。只要你不耗尽内存限制,你可以存储任意多的物品。有ADT工具可用于监视应用程序随时使用的内存量。

7

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

查看几十篇有关为AdapterView编写自定义Adapter类的教程(ListView扩展了它)。还请查看ListViews上的Google I/O 2010会话;这是非常有用的:here

+0

我们将这10k项目保存在列表适配器的数组列表中。是否导致任何内存问题? – user1767260 2014-02-13 03:50:25

3

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

我认为10K将工作:P

退房这里我详细解答,看看我的意思是:How to create a closed (circular) ListView?

5

有没有限制的ListView控件只呈现的项目,当他们进入视野,等等只关心为ListView的数据,当涉及到渲染的项目(尽管它需要知道物品的数量,以使正确的滚动条)

学习有关的ListView的谷歌IO视频确实是伟大的 http://www.youtube.com/watch?v=wDBM6wVEO70

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

  • 该列表是否需要最初显示它们?它可以显示最相关的设置吗?最近/最大/最小/最好/等
  • 而不是一次加载它们,你可以加载块的项目页面?因此,例如,您最初加载10-100,当用户到达底部时显示“正在加载更多...”,并显示一个旋转图标,然后再拉动更多,然后用户可以选择加载多少,以及多少滚动他们准备做
  • 如果你正在建立一个用户界面来过滤项目,所以他们从来没有需要看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/

3

Integer.MAX_VALUE,因为它的大部分功能,将打破,因为他们依靠int position

相关问题