ArrayAdapter 初始化不清除

ArrayAdapter Initializing not Clear

我正在尝试通过触发隐式意图创建一个列表,其中包含 Phone 上所有可用应用程序的名称。作为 android 的初学者,我正在学习一本书中的教程。我之前通过扩展 ArrayAdapter 创建了自定义适配器,但我不清楚这个简单的 ArrayAdapter 的语法。这是:

ArrayAdapter<ResolveInfo> adapter = new ArrayAdapter<ResolveInfo> (getActivity(),android.R.layout.activity_list_item,activities)
{
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v =  super.getView(position, convertView, parent);
        TextView tv = (TextView)v;
        ResolveInfo ri = getItem (position);
        tv.setText(ri.loadLabel(pm));
        return v;
    }
};

1- 为什么在调用ArrayAdapter 的构造函数后在括号内调用getView 方法?

2- 这是某种匿名 class 结构吗?

3- 这实际上是 ResolveInfo 对象类型的自定义适配器吗?

任何帮助将不胜感激。谢谢

  1. getView(int position, View convertView, ViewGroup parent)在括号内被调用,因为你正在构建一个new数组适配器,因此必须为适配器提供所需的方法。

  2. 是的,就是这样

  3. 是的,您正在为对象 ResolveInfo 的数组创建自定义 ArrayAdapter

我假设您之前通过实现自己的 Java Class 文件扩展了 ArrayAdapter Class,这本质上是在做同样的事情。实现您自己的 Java Class 文件的好处是您可以在项目的任何地方使用相同的 ArrayAdapter。但是,如果这是您唯一需要此适配器的地方,那么以这种方式实现它可能会更好。