我正在尝试通过触发隐式意图来创建包含电话上所有可用应用程序名称的列表。作为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的Object类型的自定义适配器吗?
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
getView(int position, View convertView, ViewGroup parent)
,因为您正在构建new
数组适配器,因此必须为适配器提供所需的方法。
是的,这正是它的原因
是的,您正在为对象ResolveInfo的数组创建自定义ArrayAdapter
,
我假设您之前通过实现自己的Java类文件扩展了ArrayAdapter类,这基本上是做同样的事情。实现自己的Java类文件的好处是,您可以在项目的任何位置使用相同的ArrayAdapter
。但是,如果这是您需要此适配器的唯一地方,那么以这种方式实现它可能会更好。