【发布时间】:2015-02-15 23:46:08
【问题描述】:
我写了以下语句来创建ArrayAdapter<String>,
ArrayAdapter<String> arrayListAdapter = new ArrayAdapter<String>(getActivity(), R.layout.fragment_result_titles, R.layout.row_listview, arrayList);
但是我得到了构造函数调用不明确的错误。
我了解当传递 null 时,不清楚我们调用的是 ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) 和 ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) 中的哪一个。
但后来我尝试了这个:
ArrayList arrayList = null;
ArrayAdapter<String> arrayListAdapter = new ArrayAdapter<String>(getActivity(), R.layout.fragment_result_titles, R.layout.row_listview, arrayList);
这并没有给出错误,虽然我仍然通过null,不是吗?
为什么会这样?
【问题讨论】:
-
因为编译器解决了歧义,当您传递 arrayList 引用时
-
...如果您在此处传递 null,您也会获得 NPE(就在您将此适配器设置为 AdapterView(ListView) 之后,因为底层代码将尝试调用
((List)null).size())...您应该使用这个构造函数:ArrayAdapter(Context context, int resource, int textViewResourceId)
标签: java android arraylist adapter android-arrayadapter