如何在android listview中实现多个项目?

时间:2014-08-06 00:03:01

标签: android listview

我想在导航抽屉中实现一个列表视图,其中第一项是由三个子项组成的线性布局:facebookProfilePicture,textview和logout按钮。其余项目只是文本视图。

我已经看到了不同的方法,其中包括观众模式,但在Udacity的谷歌教程中,他们使用不同的方式使用光标适配器,覆盖绑定视图和其他一些方法。

我应该使用什么?

3 个答案:

答案 0 :(得分:1)

根据您的问题,我假设您要将自定义项目(各种类型)添加到项目列表中(在代码中声明或来自数据库)。 在这里,您必须实现自己的自定义适配器(您可以扩展Adapter基类,或者如果使用数据库,则可以扩展Cursor Adapter),它将具有不同类型的元素。对于每种类型,您可以声明一个单独的布局xml,您可以根据需要自定义它。

This is a good link我自己用于类似的东西。

(如果它是动态的,即如果用户可以更改或删除项目,那么你将不得不实现自己的ContentObserver,这可能有点棘手,但有足够的资源在线帮助你!)

旁注:视图符号模式不同,与列表中不同类型的项目无关。它通过避免重复使用findViewById()在列表中用于平滑滚动,因此VM不必在布局上找到与no.of项一样多次的元素(如TextView等)。它只找到它们一次,并且只填充与no.of项目一样多的次数。还

答案 1 :(得分:0)

当您想要从数据库或内容提供商处检索数据时,可以使用

CursorAdapter

如果从互联网查询数据,只需使用普通适配器。

答案 2 :(得分:-1)

CursorAdapter是一种告诉ListView如何从游标中读取数据的方法。如果您从数据库中读取简单数据并希望在ListView中显示它,这是一个方便的工具。

您要问的第一个问题是您的数据在哪里?它是否会以光标的形式到达(例如,您是从数据库中获取它)。如果答案是否定的,那么游标适配器可能是错误的。

许多其他适配器在其构造函数中使用数组(例如,参见ArrayAdapter),列表甚至映射,因此还有其他简单的方法可以为适配器提供数据。

当您在构造函数中无法提供用于读取布局/数据的所有信息时,通常会使用您提到的“查看者”模式。它与重写适配器的getView()方法一起使用。