我现在真的很困惑,不知道该学哪一个。我是一名iPhone应用程序开发人员,现在正在学习安卓开发。
我已经学会了如何通过Adapter将ListView与静态字符串数组一起使用。我习惯于在iPhone中使用自定义单元格,主要用于在TableView中显示图像和文本等动态内容。
那么在安卓系统中实现这一点的方法是什么呢?TableLayout还是ListView
发布于 2012-08-28 15:46:29
正如其他人在评论中所说的那样,在具体决定使用哪种布局之前,您需要清楚地定义您首先要做什么。然而,我当然可以理解在决定使用哪种类型的布局类时产生的困惑,因为为了实现相同的目标,通常会有几个布局类可供选择。例如,要创建垂直滚动的项目列表,您可能首先选择一个垂直的LinearLayout,然后将其放入ScrollView中。但另一方面,为了实现类似的最终结果,您可以将ListView与合适的Adapter一起使用。
类似地,要显示可以垂直滚动的项的网格,可以在ScrollView中使用TableLayout。或者,同样通过适当的Adapter提供数据,使用GridView也可以获得类似的结果。
现在,第一个关键区别是:像LinearLayout和TableLayout这样的类要求您以XML布局或以编程方式在代码中提供子元素。像ListView和GridView (以及其他几个)这样的类非常不同,因为它们是android.widget.AdapterView的子类。AdapterView类的特殊之处在于使用Adapter将数据绑定到这些类。因此,回到垂直项目列表的示例,如果根据某些数组数据在LinearLayout中显示一组子列表项,则必须基于数组数据以编程方式创建子View并将其添加到该LinearLayout中。另一方面,对于ListView,表示子项的各个View由合适的Adapter提供。因此,Adapter-based布局并不是以编程方式用所有子项填充布局(例如LinearLayout或TableLayout ),而是在需要时调用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,我将重点放在用于实现数据布局和滚动的布局类型上。然而,像LinearLayout、TableLayout等布局类是重要的类,您将一直使用这些类来为您的应用程序形成单独的布局构建块。如果您的整个列表保证适合屏幕并且不能滚动,那么使用Adapter的额外复杂性(并不是说它真的很复杂)可能是毫无意义的,然后您可能只想使用TableLayout或其他什么。
发布于 2012-08-28 15:18:40
相当于iOS UITableView的安卓系统是RecyclerView。
它非常强大,可以填充来自不同来源的数据,这取决于附加到它的Adapter的类型。你可能想看看这个RecyclerView codelab。
发布于 2012-08-28 15:20:40
1.如果您想以列表形式在CUSTOM VIEW上使用dynamic data,则使用BaseAdapter或ArrayAdapter的ListView是可行的.....
2. TableLayout将使用完全不同的使用,我主要使用它来显示需要以堆栈形式显示的数据。
请参阅以下链接以快速了解和实现:
http://www.ezzylearning.com/tutorial.aspx?tid=1763429
http://www.vogella.com/articles/AndroidListView/article.html
https://stackoverflow.com/questions/12152833
复制相似问题