我现在真的很困惑该学哪一个。我是一名 iPhone 应用程序开发人员,现在正在学习 Android 开发。
我已经学会了如何使用 aListView
和一个静态的字符串数组Adapter
。我习惯在 iPhone 中使用自定义单元格,主要用于在TableView
s 中显示动态内容,例如图像和文本。
那么在Android中这样做的方法是什么?TableLayout
还是ListView
?
我现在真的很困惑该学哪一个。我是一名 iPhone 应用程序开发人员,现在正在学习 Android 开发。
我已经学会了如何使用 aListView
和一个静态的字符串数组Adapter
。我习惯在 iPhone 中使用自定义单元格,主要用于在TableView
s 中显示动态内容,例如图像和文本。
那么在Android中这样做的方法是什么?TableLayout
还是ListView
?
正如其他人在评论中已经说过的那样,您需要先明确定义要做什么,然后再具体决定使用哪种类型的布局。但是,我当然可以理解尝试决定使用哪种类型的布局类所引起的混乱,因为通常有几个可供选择以实现相同的目标。例如,要创建一个垂直滚动的项目列表,您可能首先选择一个 vertical LinearLayout
,然后将其放在一个ScrollView
. 但另一方面,要获得类似的最终结果,您可以将 aListView
与合适的Adapter
.
同样,要显示可以垂直滚动的项目网格,您可以使用 a TableLayout
inside a ScrollView
。或者,使用GridView
, 也可以通过合适的Adapter
.
现在,第一个关键区别是:类喜欢LinearLayout
并TableLayout
要求您以 XML 布局或以编程方式在代码中提供子元素。ListView
和GridView
(以及其他几个)这样的类非常不同,因为它们是android.widget.AdapterView
. 类的特殊之处AdapterView
在于它Adapter
用于将数据绑定到它们。因此,回到垂直项目列表的示例,如果您LinearLayout
根据一些数组数据在 a 中显示一组子列表项,则必须根据数组数据以编程方式创建并添加子View
项LinearLayout
。ListView
另一方面,View
代表子项目的个体 s 是从一个合适的Adapter
. 因此,不是您以编程方式用所有子项填充布局(例如,LinearLayout
或TableLayout
就是这种情况),Adapter
而是基于 - 的布局调用Adapter
以在需要时获取子项View
。
最后一点是我认为您应该了解Adapter
基于布局的下一个关键区别:在大量数据滚动到视野之外的情况下,它们在显示大量数据方面效率更高。例如,ListView
使用 a 来显示大型滚动项目列表比LinearLayout
使用所有项目填充 a 并将其放入 a 更有效ScrollView
。这种效率的原因是AdapterView
基于 - 的布局通常不会同时包含所有 child View
。相反,当用户滚动列表时,现有的子视图会被“回收”或“转换”Adapter
显示下一个子元素。举个例子来说明这一点:您需要一个包含 100 个项目的滚动垂直列表。但是,屏幕可能只够一次显示 7 个。假设您使用LinearLayout
inside aScrollView
来显示 100 个列表项。这意味着LinearLayout
容器有 100 个 child Views
。这些孩子总是出现在布局中,并且需要在滚动事件期间由系统处理,即使一次只能在屏幕上看到七个。这需要额外的 CPU 时间、大量 RAM,并且滚动可能会很慢。现在,使用 a ListView
,布局可能只包含 7 或 8 个 child View
。当用户滚动时,这些 childView
被动态转换或重新实例化Adapter
通过它你绑定你的数据。用户将体验到更快、更流畅的滚动操作。从编程的角度来看,通过Adapter
. 当您处理Bitmap
s 的滚动列表或网格时,设备的内存限制Android
也意味着使用 anAdapterView
非常重要。
请记住,在回答这个问题时,我假设您正在尝试显示可滚动的项目的垂直或表格列表,可能包括Bitmap
s,并且我专注于您想要的布局类型用于实现该数据的布局和滚动。LinearLayout
然而,像,等布局类TableLayout
是重要的类,您将一直使用它们来为您的应用程序形成单独的布局构建块。如果保证您的整个列表适合屏幕并且不可滚动,那么使用 an 的额外复杂性Adapter
(并不是真的那么复杂)可能毫无意义,那么您可能只想使用 aTableLayout
或其他什么。
相当于 iOS 的 AndroidUITableView
是RecyclerView
.
它非常强大,可以填充来自不同来源的数据,具体取决于您附加到它的适配器的类型。您可能想看看这个RecyclerView 代码实验室。
1.如果你想dynamic data
在CUSTOM VIEW
一个列表的形式上,那么ListView
用BaseAdapter
orArrayAdapter
是要走的路.....
2. TableLayout
将有完全不同的用途,主要是我用它来显示需要以堆栈形式显示的数据..(即一个在另一个之上....)
请参阅以下链接以快速理解和实施:
http://www.ezzylearning.com/tutorial.aspx?tid=1763429
http://www.vogella.com/articles/AndroidListView/article.html