【问题标题】:ArrayAdapter Initializing not ClearArrayAdapter 初始化不明确
【发布时间】:2015-07-21 19:19:18
【问题描述】:

我正在尝试通过触发隐式意图来创建一个列表,其中包含电话上所有可用应用程序的名称。作为 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- 这是某种匿名类结构吗?

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

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

【问题讨论】:

标签: android listview android-arrayadapter


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

  2. 是的,就是这样

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

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

【讨论】:

  • 非常感谢。这让事情变得有点清楚了。顺便说一句,默认情况下 ArrayAdapter 仅适用于数组,如果它需要处理任何其他对象,我们需要自定义适配器?
  • @UmairRiaz 是的,您需要一个用于自定义对象的自定义适配器。
猜你喜欢
  • 2017-08-06
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多