ListView或TableLayout?

android android-listview android-adapter android-tablelayout custom-cell

17448 观看

3回复

766 作者的声誉

我现在真的很困惑要学习哪一个。我是一名iPhone应用程序开发人员,现在正在学习Android开发。

我已经学会了如何使用ListView带有静态字符串的字符串Adapter。我习惯在iPhone中使用自定义单元格,主要用于显示TableViews中的图像和文本等动态内容。

那么在Android中这样做的方法是什么?TableLayout还是ListView

作者: Akash Malhotra 的来源 发布者: 2012 年 8 月 28 日

回应 3


6

10465 作者的声誉

而Android相当于iOS的UITableViewRecyclerView

它功能非常强大,可以根据您连接的适配器类型填充来自不同来源的数据。您可能想看一下这个RecyclerView codelab

作者: keyboardsurfer 发布者: 2012 年 8 月 28 日

2

29083 作者的声誉

1.如果你想dynamic dataCUSTOM VIEW以列表的形式,然后ListViewBaseAdapter或者ArrayAdapter是要走的路.....

2. TableLayout完全不同的用途,大多数我用它来显示需要以堆栈形式显示的数据..(即一个在另一个....)

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

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

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

作者: Kumar Vivek Mitra 发布者: 2012 年 8 月 28 日

75

8533 作者的声誉

决定

正如其他人已经在评论中所说的那样,在对具体使用的布局类型做出具体决定之前,您需要先明确定义您想要做的事情。但是,我当然可以理解由于试图决定使用哪种类型的布局类而产生的混淆,因为通常有几种可供选择来实现相同的目标。例如,要创建垂直滚动的项目列表,您可能首先选择一个垂直LinearLayout,然后将其放入a ScrollView。但另一方面,为了达到类似的最终结果,你可以ListView和合适的人一起使用Adapter

同样,要显示可以垂直滚动的项目网格,您可以使用TableLayout内部a ScrollView。或者,通过使用a GridView,再次通过合适的数据提供数据,可以实现类似的结果Adapter

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

最后一点是我认为您应该了解的Adapter基于布局的下一个关键差异:在大部分数据滚动出视图的情况下,它们在显示大量数据方面更有效。例如,a ListView用于显示项目的大型滚动列表比LinearLayout使用所有项目填充a 并将其放入a中更有效ScrollView。这种效率的原因是AdapterView基于布局通常不会同时包含所有子项View。相反,当用户滚动列表时,现有的子视图被“循环”或“转换”Adapter显示下一个子元素。为了说明这一点,您需要一个包含100个项目的滚动垂直列表。然而,屏幕可能只大到足以一次显示7。想象一下,您使用LinearLayout内部a ScrollView来显示100个列表项。这意味着LinearLayout容器有100个孩子Views。这些孩子总是出现在布局中,并且在滚动事件期间需要由系统处理,即使一次只能在屏幕上查看七个孩子。这需要额外的CPU时间,相当大的RAM,并且滚动可能会缓慢。现在,使用a ListView,布局可能只包含7个或8个子View节点。当用户滚动时,那些孩子View被动态转换或重新实例化Adapter通过它绑定您的数据。用户将体验更快,更顺畅的滚动操作。从编程的角度来看,通过一个数据绑定数据列表通常会更加优雅Adapter。当你处理滚动列表或Bitmaps的网格时,设备的内存限制Android也意味着使用a AdapterView非常重要。

请记住,在回答这个问题时,我假设您正在尝试显示可滚动的项目的垂直或表格列表,可能包括Bitmaps,并且我专注于您所使用的布局类型用于实现该数据的布局和滚动。布局类一样LinearLayoutTableLayout但是等,你将使用所有的时间,形成独特的布局积木为您的应用重要的类。如果你的整个列表是保证以适应屏幕并不会滚动,然后使用一个额外的复杂性Adapter(不在于它真的那么复杂)可能是毫无意义的,然后你可能只是想使用TableLayout或什么的。

作者: Trevor 发布者: 2012 年 8 月 28 日
32x32