当我们使用ArrayAdapter时,我们将类似列表的内容传递给超类。但基本适配器构造函数没有任何参数。该类如何查找数据集?我在一些例子中看到他们只是定义一个数组并覆盖函数而不将列表指定为数据集。那么班级如何理解这是数据集?如果我们在派生类中定义了多个列表怎么办?
编辑: 我想我应该澄清一下我的问题。当我们使用ArrayAdapter时,指定数据集并且程序知道要迭代的内容并为每个数据集调用getView。但是在BaseAdapter中我们只定义一个列表并覆盖4个函数,它可以工作!我的问题是它为什么有用?!我们没有指定我们刚刚指定getView主体的数据集,它返回一个视图。我不明白程序如何找到数据集。
答案 0 :(得分:0)
正如文档所解释的那样:
适配器的通用实现的公共基类
意味着您必须执行此操作。
http://developer.android.com/reference/android/widget/BaseAdapter.html
答案 1 :(得分:0)
该课程如何查找数据集?
没有。您的BaseAdapter
子类管理数据集。
如果我们在派生类中定义了多个列表怎么办?
只要您正确实施abstract
Adapter
方法(getCount()
,getView()
,getItem()
,getItemId()
,...) ,您如何管理自己的数据取决于您。
答案 2 :(得分:0)
在对代码进行更多考虑后,我认为这是基本适配器的工作原理:
它使用'position'参数将getView()函数循环为从0到getCount()返回的内容。 我们必须覆盖getCount()并发送dataSet的最后一项的正确索引。每次调用getView()时,我们都可以根据当前位置处理视图和我们想要的任何列表。 我认为ArrayAdapter和BaseAdapter之间的主要区别在于,当我们将列表传递给超类时,ArrayAdapter会找到列表的最后一个索引,但在基本适配器中,我们应该定义最后一个索引。 getView()的实现是相同的,我们可以在getView中使用我们想要的任何列表。诀窍只是关于位置参数。