首先:我最近才开始为Android开发,所以请不要向我提出愚蠢/明显的问题! ; d
我遇到的问题如下:我想显示一个长度未知的可点击项目列表 - 我的样本数据集大约为300。 使用LinearLayout并将它们全部添加为TextViews在模拟器上花费半秒钟,这完全没问题。 为了增强用户体验,我现在用相对布局替换了LinearLayouts,每个布局都有一个背景图像,2个TextViews和3个ImageViews。所有图像都包含在资源中,因此不会浪费下载时间等等。
问题是:构建此视图现在大约需要10秒钟,这显然不是可行的解决方案。 我的假设是完整的UI是完全构建的,尽管只有一部分可见(使用一些滚动容器)
由于我懒得编写逻辑来手动确保只有UI的可见部分实际填充,我想知道是否有人知道这个问题的一些简单的标准解决方案。
我是否需要激活某种UI代理? 或者,您是否建议使用前10个元素创建屏幕,并在单独的线程中将其他元素加载到后台? (不知道滚动容器 - 或者通常用于Android的UI - 会对此做出反应)
提前感谢您的帮助! =)
TL; DR: 构建大视图的方式太慢 - 需要帮助! 小狗的眼睛
答案 0 :(得分:4)
我想显示一个未知长度的可点击项目列表 - 我的样本数据集大约为300
使用ListView
或AdapterView
的任何其他子类。
我的假设是完整的UI是完全构建的,尽管只有一部分可见(使用一些滚动容器)
这就是AdapterView
子类(如ListView
)的用途 - 仅为可见内容而不是整个数据模型创建小部件。
由于我懒得编写逻辑来手动确保只有UI的可见部分实际填充,我想知道是否有人知道这个问题的一些简单的标准解决方案。
使用ListView
或AdapterView
的任何其他子类。
我是否需要激活某种UI代理?
没有
或者您是否建议使用前10个元素创建屏幕,然后在单独的线程中将其他元素加载到后台?
没有。主要是因为你会崩溃。您只能从主应用程序线程修改UI,而不能修改您分叉的后台线程。
答案 1 :(得分:1)
显然,马克的回答是正确的,以及你需要解决这个特殊问题的方式。
但是,将来我建议您在下次遇到问题时快速浏览一下文档。特别是View documentation通常是我发现新的(对我来说)Android框架功能的首选页面。
一般来说,如果你需要一些东西并且认为它可能需要付出太多努力,但是它已经被某人已经完成了,我推荐这些步骤:
当然,Stack Overflow是一个很好的资源,但有时答案太具体了,不适合发现新功能。