繁体   English   中英

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

[英]When should I use BaseAdapter in Android?

我正在使用适配器在列表视图中填充数据的android应用程序上工作。 我在应该使用BaseAdapter地方感到困惑。 我读到很多问题,写在哪里,我们应该将ArrayAdapter用于可以正常使用的数组和arraylist,并在使用游标的情况下使用CursorAdapter

我知道BaseAdapterArrayAdapterCursorAdapter的超类。 我已经检查了这个问题ArrayAdapter,BaseAdapter和ListAdapter之间有什么区别,但是没有解释我们何时应该使用BaseAdapter

什么时候应该使用BaseAdapter

您应该使用它:

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

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

例如,假设您使用JSONArray来解析JSON片段。 JSONArray不实现List接口,因此不能与ArrayAdapter一起使用。 其他适配器均不匹配。 但是,您想在AdapterView显示此JSONArray 在这种情况下,您的选择是:

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

  • 创建可以适配JSONArrayJSONArrayAdapter )的BaseAdapter的自定义子类

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

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

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

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

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

请注意, ArrayAdapterCursorAdapter实现ListAdapter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM