我什么时候应该在Android中使用BaseAdapter?

时间:2014-12-16 12:40:37

标签: android adapter

我正在研究Android应用程序,其中我使用适配器来填充listview中的数据。我很困惑我们应该使用BaseAdapter。我读了很多问题,我们应该使用ArrayAdapter表示数组和arraylist,如果是游标,可以使用CursorAdapter

我知道BaseAdapterArrayAdapterCursorAdapter的超类。我已经检查了这个问题What is the difference between ArrayAdapter , BaseAdapter and ListAdapter,但它没有解释我们应该何时使用BaseAdapter

我应该何时使用BaseAdapter

2 个答案:

答案 0 :(得分:5)

您应该使用它:

  • 如果您的模型数据尚未存在于具有具体ListAdapter类的数据结构中,并且

  • 如果您确定创建自定义适配器对用户来说会更好,或者对您的开发工作可能比重新组织数据结构更少

例如,假设您使用JSONArray来解析JSON片段。 JSONArray未实现List界面,因此您无法将其与ArrayAdapter一起使用。其他适配器都不匹配。但是,您希望在JSONArray中显示此AdapterView。在这种情况下,您的选择是:

  • 滚动数据并将其转换为ArrayList,以便您可以使用ArrayAdapter

  • 创建BaseAdapter的自定义子类,可以调整JSONArray(a JSONArrayAdapter

  • 停止使用JSONArray,而是使用其他内容来解析您的JSON,例如Gson,它可以直接填充List,允许您使用ArrayAdapter

答案 1 :(得分:3)

如果您的数据在Collection中可用,则可以使用ArrayAdapter。 (使用addAll方法将数据放入适配器中)

如果您的数据不在Collection:那么您不能,您必须找到另一个适合您需求的适配器。 (通常:当数据来自数据库时使用CursorAdapter

如果找不到任何适用于您的数据结构/数据源的现有适配器:您可以编写BaseAdapter的子类来支持您自己的数据结构。

如果您打算在ListView中显示数据(这是一个常见的用例):那么您必须确保您的adpter也实现ListAdapter(因为ListView needs a ListAdapter

请注意ArrayAdapterCursorAdapter实现了ListAdapter