Aka*_*tra 25 android custom-cell android-listview android-adapter android-tablelayout
我现在真的很困惑要学习哪一个.我是一名iPhone应用程序开发人员,现在正在学习Android开发.
我已经学会了如何使用ListView
带有静态字符串的字符串Adapter
.我习惯在iPhone中使用自定义单元格,主要用于显示TableView
s中的图像和文本等动态内容.
那么在Android中这样做的方法是什么?TableLayout
还是ListView
?
Tre*_*vor 78
正如其他人已经在评论中所说的那样,在对具体使用的布局类型做出具体决定之前,您需要先明确定义您想要做的事情.但是,我当然可以理解由于试图决定使用哪种类型的布局类而产生的混淆,因为通常有几种可供选择来实现相同的目标.例如,要创建垂直滚动的项目列表,您可能首先选择一个垂直LinearLayout
,然后将其放入a ScrollView
.但另一方面,要获得类似的最终结果,您可以使用ListView
合适的Adapter
.
同样,要显示可以垂直滚动的项目网格,您可以使用TableLayout
内部a ScrollView
.或者,通过使用a GridView
,再次通过合适的数据提供数据,可以实现类似的结果Adapter
.
现在,第一个关键区别是:类似LinearLayout
并且TableLayout
要求您以XML布局提供子元素,或者以编程方式提供代码.像ListView
和GridView
(和其他几个)这样的类是非常不同的,因为它们是子类android.widget.AdapterView
.关于AdapterView
类的特殊之处在于,a Adapter
用于将数据绑定到它们.因此,回到垂直项目列表的示例,如果您在LinearLayout
基于某些数组数据的内部显示一组子列表项,则必须以编程方式创建并根据数组数据将子项添加View
到其中LinearLayout
.与ListView
在另一方面,单独的View
表示中的子项s的由合适的供给Adapter
.因此,不是以编程方式使用所有子项填充布局(例如,LinearLayout
或者TableLayout
例如),Adapter
基于布局的布局会调用Adapter
以View
在需要时获取子项.
最后一点是我认为您应该了解的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
.当你处理滚动列表或Bitmap
s的网格时,设备的内存限制Android
也意味着使用a AdapterView
非常重要.
请记住,在回答这个问题时,我假设您正在尝试显示可滚动的项目的垂直或表格列表,可能包括Bitmap
s,并且我专注于您所使用的布局类型用于实现该数据的布局和滚动.布局类一样LinearLayout
,TableLayout
但是等,你将使用所有的时间,形成独特的布局积木为您的应用重要的类.如果你的整个列表是保证以适应屏幕并不会滚动,然后使用一个额外的复杂性Adapter
(不在于它是真的那么复杂)可能是毫无意义的,然后你可能只是想使用TableLayout
或什么的.
而Android相当于iOS的UITableView
是RecyclerView
.
它功能非常强大,可以根据您连接的适配器类型填充来自不同来源的数据.您可能想看一下这个RecyclerView codelab.
归档时间: |
|
查看次数: |
18520 次 |
最近记录: |