2011-03-18 79 views
2

首先:我最近才开始为Android开发,因此请不要在我面前炫耀一些愚蠢/明显的问题! ; DAndroid:构建视图有很多元素非常慢(10+秒)

我遇到的问题如下:我想显示未知长度的可点击项目列表 - 我的示例数据集大约是300. 使用LinearLayout并将它们全部添加为TextView需要半个第二在模拟器上,这是完全没问题的。 为了增强用户体验,我现在用相对布局取代了LinearLayouts,每个布局都带有背景图像,2个TextViews和3个ImageViews。所有图像都包含在资源中,因此不会浪费时间下载或进行任何操作。

问题是:现在大约需要10秒来建立这个视图,这显然没有可行的解决方案。 我的假设是,完整的用户界面是完全构建的,尽管只有一部分是可见的(使用一些滚动容器)

因为我懒得写逻辑手动确保只有可见部分用户界面实际上是填充的,我想知道是否有人知道这个问题的一些简单的标准解决方案。

是否有某种UI代理我只需要激活? 或者你会建议像前10个元素一样创建屏幕,并在另一个线程中将其他人加载到背景中? (不知道如何滚动容器 - 或在一般情况下的android UI - 会对此作出反应)

感谢您提前提供所有帮助! =)

tl; dr: 建筑大观点方式太慢 - 需要帮助! 小狗的眼睛

回答

4

我想显示未知长度的可点击项目列表 - 我的样本数据集在300

使用ListView,或AdapterView任何其他子类。

我的假设将是完整的UI尽管它是可见的(使用一些滚动容器)

这就是始终只能部分完全建立什么AdapterView子类,像ListView,是 - 只为可见的内容创建小部件,而不是整个数据模型。

因为我懒得编写逻辑手动确保UI的可见部分实际上是填充的,我想知道是否有人知道这个问题的一些简单的标准解决方案。

使用ListViewAdapterView的任何其他子类。

是否有某种UI代理我只需要激活?

No.

或者你会推荐创建类似前10个元素的屏幕,并在另一个线程中加载其他元素的背景?

号多半是因为你会崩溃。您只能从主应用程序线程修改UI,而不是您分叉的后台线程。

1

显然马克的答案是正确的方式和你需要去为这个特殊的问题。

然而,在未来我建议给文档快速浏览下一次你有一个问题。特别是View documentation通常是我发现新(对我)Android框架功能的指南页面。

一般来说,如果你需要的东西,并认为这可能是太多精力的事,但它的很常见,它应该已经被别人做,我建议这些步骤:

  • 打开view docs,然后在“间接子类”下查找您需要的东西。
  • 打开API Demos示例应用程序,看看您是否可以找到您想要实现的内容。它具有相当好的API覆盖率,您可以在Sample Code部分轻松找到代码。
  • 查看其他示例项目。该目录中有一些相关的参与者。

当然,Stack Overflow是一个很好的资源,但有时答案是过于具体,不适合自己发现新功能。