首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListView还是TableLayout?

ListView还是TableLayout?
EN

Stack Overflow用户
提问于 2012-08-28 12:37:30
回答 3查看 19.7K关注 0票数 26

我现在真的很困惑,不知道该学哪一个。我是一名iPhone应用程序开发人员,现在正在学习安卓开发。

我已经学会了如何通过AdapterListView与静态字符串数组一起使用。我习惯于在iPhone中使用自定义单元格,主要用于在TableView中显示图像和文本等动态内容。

那么在安卓系统中实现这一点的方法是什么呢?TableLayout还是ListView

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-28 15:46:29

正如其他人在评论中所说的那样,在具体决定使用哪种布局之前,您需要清楚地定义您首先要做什么。然而,我当然可以理解在决定使用哪种类型的布局类时产生的困惑,因为为了实现相同的目标,通常会有几个布局类可供选择。例如,要创建垂直滚动的项目列表,您可能首先选择一个垂直的LinearLayout,然后将其放入ScrollView中。但另一方面,为了实现类似的最终结果,您可以将ListView与合适的Adapter一起使用。

类似地,要显示可以垂直滚动的项的网格,可以在ScrollView中使用TableLayout。或者,同样通过适当的Adapter提供数据,使用GridView也可以获得类似的结果。

现在,第一个关键区别是:像LinearLayoutTableLayout这样的类要求您以XML布局或以编程方式在代码中提供子元素。像ListViewGridView (以及其他几个)这样的类非常不同,因为它们是android.widget.AdapterView的子类。AdapterView类的特殊之处在于使用Adapter将数据绑定到这些类。因此,回到垂直项目列表的示例,如果根据某些数组数据在LinearLayout中显示一组子列表项,则必须基于数组数据以编程方式创建子View并将其添加到该LinearLayout中。另一方面,对于ListView,表示子项的各个View由合适的Adapter提供。因此,Adapter-based布局并不是以编程方式用所有子项填充布局(例如LinearLayoutTableLayout ),而是在需要时调用Adapter来获取子View

最后一点是我认为你应该理解的基于Adapter的布局的下一个关键区别:它们在显示大量数据时效率更高,在许多数据滚动到视图之外的情况下。例如,与简单地将所有项填充到ListView并将其放入ScrollView中相比,使用LinearLayout显示大型滚动列表的效率要高得多。这种效率的原因是AdapterView-based布局通常不会一次包含所有的子View。相反,当用户滚动列表时,现有的子视图被Adapter“回收”或“转换”以显示下一个子元素。用一个例子来说明这一点:你想要一个包含100个项目的滚动垂直列表。然而,屏幕可能只够大,一次只能显示7。假设您在ScrollView中使用LinearLayout来显示100个列表项。这意味着LinearLayout容器有100个子Views。这些子项始终出现在布局中,并且在滚动事件期间需要由系统处理,即使屏幕上一次只能显示七个子项。这会占用额外的CPU时间和大量的RAM,而且滚动可能会很慢。现在,有了ListView,布局可能只包含7或8个子View,当用户滚动时,这些子View会被绑定数据的Adapter动态转换或重新实例化。用户将体验到更快、更流畅的滚动操作。从编程的角度来看,通过Adapter绑定数据列表通常要优雅得多。当您处理滚动列表或Bitmap网格时,Android设备的内存限制也意味着AdapterView的使用非常重要。

请记住,在回答这个问题时,我假设您正在尝试显示可滚动的垂直或表格项目列表,可能包括Bitmap,我将重点放在用于实现数据布局和滚动的布局类型上。然而,像LinearLayoutTableLayout等布局类是重要的类,您将一直使用这些类来为您的应用程序形成单独的布局构建块。如果您的整个列表保证适合屏幕并且不能滚动,那么使用Adapter的额外复杂性(并不是说它真的很复杂)可能是毫无意义的,然后您可能只想使用TableLayout或其他什么。

票数 80
EN

Stack Overflow用户

发布于 2012-08-28 15:18:40

相当于iOS UITableView的安卓系统是RecyclerView

它非常强大,可以填充来自不同来源的数据,这取决于附加到它的Adapter的类型。你可能想看看这个RecyclerView codelab

票数 7
EN

Stack Overflow用户

发布于 2012-08-28 15:20:40

1.如果您想以列表形式在CUSTOM VIEW上使用dynamic data,则使用BaseAdapterArrayAdapterListView是可行的.....

2. TableLayout将使用完全不同的使用,我主要使用它来显示需要以堆栈形式显示的数据。

请参阅以下链接以快速了解和实现:

http://www.ezzylearning.com/tutorial.aspx?tid=1763429

http://www.vogella.com/articles/AndroidListView/article.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12152833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档