Android中视图和适配器的直觉是什么,这意味着制作此概念的人从哪里获得创建这些元素所需的思维过程?详细说明,圆圈的概念起源于自然,月亮太阳这样的天体,明智的是使用listview和适配器背后的直觉是什么?
答案 0 :(得分:0)
您可能已经知道,在Android上使用ListView(以及最近的RecyclerView)需要使用 Adapter 从数据源获取数据并将其转换为可显示的内容然后显示在列表中。
那么为什么Google的工程师会以他们的方式实施ListView和支持Adapters?
它主要涉及以下几点:
<强>性能:强> 想象一下,你有1000个联系人,每个联系人都有一张图片和各种信息。您希望它能够正常工作,快速加载并平滑滚动。这种天真的方式可能是创建一个可滚动的布局来保存联系人列表,然后只需为每个联系人添加一个子布局。不幸的是,这将失败所有三个要求:它不会很好地工作,因为没有足够的内存(ram)为所有这些联系人,特别是相关的图片,并且应用程序将耗尽内存和碰撞;它不会快速加载,因为所有联系人和联系人图片必须在显示列表之前加载到内存中,这将花费很长时间;它不会顺利滚动,因为你没有ListView和适配器所做的所有高级缓存,预渲染和位图纹理缓存。使用ListView和适配器,它可以解决所有这些问题。
开发人员的适应性和易用性:ListView和Adapters用于许多不同的事情,从联系人列表一直到具有不同答案,评论和吨的复杂页面Stack Exchange Android应用程序中的其他信息。适配器使得处理来自不同来源的数据变得简单:只需一个公共API,可以使用和扩展以显示任何类型的数据,这比每个开发人员必须实现自己的解决方案要容易得多。想要在用户滚动到列表底部时加载更多数据?当然,这很容易。想要在列表中添加不同类型的商品吗?当然,这很容易。
那么,Google和Android开发人员和工程师是否发明了使用适配器的想法?没有。
事实上,几乎每个涉及显示项目列表的系统或环境都使用类似的东西:实际的项目列表,它后面的适配器,转换数据并使其可显示,然后是实际的数据源,它可以是一个提供项目列表的任何东西,从数据库到Web服务。它基本上是这样的:data source > adapter > list where it's displayed
。这种模式用于桌面Windows应用程序,iOS,Web应用程序,因此Google工程师采用了这一概念并将其改编为Android。
这就是ListView和Adapters以他们的方式工作(和使用)的原因。
PS:这是Google工程师关于如何正确使用ListView和适配器的Google IO视频,还有一些关于它们如何工作的视频:http://youtube.com/watch?v=wDBM6wVEO70。