我对如何使用适配器感到困惑。因此,自定义ArrayAdapter类中的构造函数与自定义BaseAdapter类中的构造函数略有不同,我不明白这是如何发生的。所以这是一个自定义的ArrayAdapter类构造函数;
private class TaskAdapter extends ArrayAdapter<Task>{
TaskAdapter(ArrayList<Task> tasks){
super(TaskListActivity.this, R.layout.task_list_row,R.id.task_item_name, tasks);
}
这是一个自定义的BaseAdapter类构造函数;
private class FieldsAdapter extends BaseAdapter{
ArrayList<String> emails;
ArrayList<String> phoneNumbers;
FieldsAdapter(ArrayList<String> phoneNumbers,ArrayList<String> emails){
this.phoneNumbers = phoneNumbers;
this.emails = emails;
}
为什么BaseAdapter类构造函数如此不同?我的意思是当你将适配器保存到一个单独的对象并使用该对象设置ListView适配器时,为什么它不需要知道TaskAdapter对象知道的所有特定信息,例如当前上下文,要复制的布局,以及要用这个TaskListActivity.this, R.layout.task_list_row,R.id.task_item_name, tasks
填充该布局的ArrayList?这对我来说有点混乱,适配器的整个目的不再有意义了。你能解释一下吗?
答案 0 :(得分:0)
主要原因是ArrayAdapter
是BaseAdapter
的子类。 BaseAdapter使您可以更自由地定义传入的数据收集类型
例如,在ArrayAdapter
旁边,我们CursorAdapter
,SimpleAdapter
也从BaseAdapter
扩展而来。
参考文献: