Android 动态创建 UI 与 ListView

标签 android performance user-interface xamarin

我有一个使用 Xamarin 开发的 Android 应用程序。该应用程序联系服务器,并通过网络服务 (SOAP) 接收对象列表。目前,在我的 axml 文件中, ScrollView 标签内只有线性布局 (ll),没有其他内容。在代码中,我循环遍历集合并更新我想要的元素并将其附加到布局。完成每条记录后,我将附加(即 AddView)到主布局 (ll)。一切正常。

我有一些顾虑,我很感激一些对此的反馈。

1) 列表中的每个对象都包含一个指向在线图像的 URL。目前,对于每个对象,我的进程单独下载图片。即使对象的其他属性不同,ListView 是否会给我任何重用(缓存等)已下载图片的优势?如果我切换到 ListView,网络利用率是否会有所提高?

2) 手工绘制元素(就像我正在做的那样)是可以接受的最佳做法吗?

谢谢大家。

最佳答案

绝对使用 ListView。有一篇很棒的文章here由 Lucas Rocha 撰写,准确概述了 ListViews 为何有益以及如何使它们表现得更好。举几个例子,ListView 最大限度地减少了 View 膨胀的次数,它们只创建当前在屏幕上可见或即将在屏幕上可见的列表项。

这是对您的方法的巨大改进,因为您当前的方法会在向用户呈现 Activity 之前加载列表中的每个元素。因此,像您目前所做的那样手动绘制元素绝对不是最佳做法。

此外,为了在您的 Xamarin 应用程序中显示来自 URL 的图像,我强烈建议您使用 Xamarin 组件 UrlImageViewHelper .尽管在您的应用中实现起来非常容易,但它会显着提高性能,因为它负责图像缓存和异步图像加载。

关于Android 动态创建 UI 与 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32317653/

相关文章:

java - 如何获取按钮的当前文本颜色?

android - OkHttp 拦截器不断返回 null 并使应用程序崩溃

android - 我们是否需要将 mp4 或 mp3 转码为 HLS 格式以在移动应用程序上流式传输视频/音频?

performance - 多线程时现代操作系统上的目录漫游器变慢?

java - 已定义构造函数的错误未定义

java - 如何从另一个 GUI 类调用一个 GUI 类?

android - AsyncTask 访问数据库 - 在哪里初始化,关闭?

c# - 最小的跨 AppDomain 通信性能损失是多少?

javascript - 结合javascript与图像 Sprite

gwt - 在GWT中,当鼠标悬停时更改标签的背景