Android Studio:在构造函数方面,BaseAdapter和ArrayAdapter之间存在差异

时间:2017-05-24 02:41:39

标签: java android constructor adapter

我对如何使用适配器感到困惑。因此,自定义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?这对我来说有点混乱,适配器的整个目的不再有意义了。你能解释一下吗?

1 个答案:

答案 0 :(得分:0)

主要原因是ArrayAdapterBaseAdapter的子类。 BaseAdapter使您可以更自由地定义传入的数据收集类型 例如,在ArrayAdapter旁边,我们CursorAdapterSimpleAdapter也从BaseAdapter扩展而来。
参考文献: