【问题标题】:When should I use BaseAdapter in Android?什么时候应该在 Android 中使用 BaseAdapter?
【发布时间】:2014-12-16 12:40:37
【问题描述】:

我正在使用适配器在列表视图中填充数据的 android 应用程序。我很困惑我们应该在哪里使用BaseAdapter。我读了很多问题,其中写到我们应该将ArrayAdapter 用于数组和arraylist 是可以的,CursorAdapter 用于光标。

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

什么时候应该使用BaseAdapter

【问题讨论】:

  • BaseAdapter 是所有适配器的基类。 CursorAdapter 我们主要用于处理来自 Sqlite 的数据,arrayadapter 用于处理数组数据。
  • 如果您实现自定义适配器以便列表管理您自己的元素类型,它应该扩展 BaseAAdapter。搜索自定义适配器和视图。
  • @Riturajsuman 是的,我知道我已经在问题中提到过。请再次阅读我的问题。
  • @bigdestroyer 谢谢你能举个例子并详细解释一下吗?

标签: android adapter


【解决方案1】:

你应该使用它:

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

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

例如,假设您使用JSONArray 来解析 JSON 的 sn-p。 JSONArray 没有实现List 接口,因此您不能将它与ArrayAdapter 一起使用。其他适配器都不匹配。然而,您想在AdapterView 中显示此JSONArray。在这种情况下,您的选择是:

  • 滚动数据并将其转换为ArrayList,因此您可以使用ArrayAdapter,或者

  • 创建BaseAdapter 的自定义子类,可以适应JSONArrayJSONArrayAdapter

  • 停止使用JSONArray,而是使用其他东西来解析你的JSON,比如Gson,它可以直接填充List,让你可以使用ArrayAdapter

【讨论】:

    【解决方案2】:

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

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

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

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

    请注意,ArrayAdapterCursorAdapter 实现了 ListAdapter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2011-04-15
      • 2017-04-10
      • 2012-03-19
      • 2018-05-12
      相关资源
      最近更新 更多