Android BaseAdapter的数据集是什么

Android BaseAdapter的数据集是什么,android,Android,当我们使用ArrayAdapter时,我们会将类似列表的内容传递给超级类。但是基本适配器构造函数没有任何参数。这个类如何找到数据集?我在一些示例中看到,它们只是定义一个数组并重写函数,而没有将列表指定为数据集。那么类如何理解这是数据集呢?如果我们在派生类中定义多个列表呢 编辑: 我想我应该澄清我的问题。当我们使用ArrayAdapter时,数据集被指定,程序知道迭代什么,并为每个数据集调用getView。但是在BaseAdapter中,我们只定义了一个列表并覆盖了4个函数,它就可以工作了!我的问

当我们使用ArrayAdapter时,我们会将类似列表的内容传递给超级类。但是基本适配器构造函数没有任何参数。这个类如何找到数据集?我在一些示例中看到,它们只是定义一个数组并重写函数,而没有将列表指定为数据集。那么类如何理解这是数据集呢?如果我们在派生类中定义多个列表呢

编辑:
我想我应该澄清我的问题。当我们使用ArrayAdapter时,数据集被指定,程序知道迭代什么,并为每个数据集调用getView。但是在BaseAdapter中,我们只定义了一个列表并覆盖了4个函数,它就可以工作了!我的问题是为什么它会起作用?!我们没有指定数据集,只是指定getView主体,它返回一个视图。我不明白程序是如何找到数据集的。

文档对此进行了很好的解释:

适配器的公共实现的公共基类

意味着您必须执行

这个类如何找到数据集

没有。BaseAdapter的子类管理数据集

如果我们在派生类中定义多个列表呢


只要您正确地实现抽象适配器方法getCount、getView、getItem、getItemId等,您就可以管理自己的数据。

在对代码进行更多考虑之后,我认为基本适配器就是这样工作的:

它使用“position”参数将getView函数从0循环到getCount返回的值。 我们必须重写getCount并发送数据集最后一项的正确索引。每次调用getView时,我们都可以根据当前位置处理视图和所需的任何列表。
我认为ArrayAdapter和BaseAdapter之间的主要区别在于,ArrayAdapter在将列表传递给超类时会找到列表的最后一个索引,但在BaseAdapter中,我们应该定义最后一个索引。getView的实现是相同的,我们可以在getView中使用我们想要的任何列表。技巧只是关于位置参数。

在ArrayAdapter中,为列表的每个项调用getView。BaseAdapter也是如此。但是怎么做呢?我们不会将列表传递给Baseadapter中的超类。在示例中,我看到只有一个getView函数和一个列表。对于它们中的每一个来说,调用getView最像是一个循环。什么调用getView?针对什么数据集?@user2808671:什么调用getView-使用适配器的AdapterView,例如ListView。什么数据集?-你要什么都行。ArrayAdapter适配阵列。游标适配器适配游标。我曾经写过一个JSONAdapter,它改编了JSONArray。等等由BaseAdapter子类的开发人员来确定数据集是什么以及如何满足适配器约定。好吧,只有定义一个包含一些变量的列表并在getView body中返回textView才能完成这项工作!在getView中,我只写textView.setTextlist[position]。但是AdapterView调用getView的目的是什么?你说我们自己决定?我没有找到一行代码来确定这一点。但这个计划是可行的。只有一个列表和一个getView函数,adapterView为所有列表调用getView。我问AdapterView如何知道为什么列表调用getView?@user2808671:但是AdapterView调用getView是为了什么获取要在屏幕上显示的视图。例如,ListView使用getView检索列表行。从这个问题我的意思是“for What list”,适配器视图调用getView函数吗?我不明白这一点,我在任何示例中都没有找到任何在基类中指定数据集的代码。我只看到AdapterView为getView中使用的列表调用getView。在getView中使用的任何列表都会被迭代并视为数据集。我已经读过了。我唯一实现的是getView。列表中的每一项都会调用getview。我的问题是这个清单。我们没有将它指定为数据集,那么AdvutVIEW如何将其视为DataSet然后调用它的GETVIEW?您必须定义它,当您将类扩展为该类的一些变量,并更改OnCuto方法时,为数据创建自己的设置器,实现其余部分。1。对象列表在派生类中定义。2.实现了getView和其他一些函数。3.完成为所有列表项调用getView。。。我们在哪里指定了数据集是什么?你能给我看一个为AdapterView或BaseClass指定数据集的例子吗?我想这个页面总结了一切:你必须定义getItemViewTypeint位置和getViewTypeCount,如果我是对的,适配器将调用它们在从0到getViewTypeCount的所有位置上创建新的视图排序循环