Android ArrayAdapter构造函数不带通用对象?

Das*_*tic 1 java android autocomplete arraylist

我遇到Android AutoComplete下拉菜单问题.我正在尝试将自定义对象传递给新的ArrayAdapter,然后将其用于下拉菜单中的数据.但是,我在这行代码中遇到以下错误:

adapter = new ArrayAdapter<String>(_context, R.layout.list_item, list_items);

The constructor ArrayAdapter<String>(Context, int, DropdownItemData[]) is undefined
Run Code Online (Sandbox Code Playgroud)

我也试过运行它,它输出一个类型不匹配错误:

adapter = new ArrayAdapter<DropdownItemData>(_context, R.layout.list_item, list_items);

Type mismatch: cannot convert from ArrayAdapter<DropdownItemData> to ArrayAdapter<String>
Run Code Online (Sandbox Code Playgroud)

然而,下面工作就好了:

String[] test_list = new String[] {"some", "test", "data"};
adapter = new ArrayAdapter<String>(_context, R.layout.list_item, test_list);
Run Code Online (Sandbox Code Playgroud)

我的DropdownItemData类重写了Object toString()方法,如下面的ArrayList文档中所建议的那样:

http://developer.android.com/reference/android/widget/ArrayAdapter.html

有谁知道问题是什么/我错过了什么?根据文档,我试图用于ArrayList的构造函数应该只是采用通用列表 - 所以我不明白错误是抱怨什么.

JB *_*zet 8

班级名称是ArrayAdapter<T>.而构造函数签名是ArrayAdapter(Context context, int textViewResourceId, T[] objects).

因此,如果将变量声明为ArrayAdapter<String>,则必须传递String构造函数的最后一个参数的数组.

为了能够传递一个数组DropdownItemData,您的适配器必须是类型ArrayAdapter<DropdownItemData>.

你可以把狮子放在一只Cage<Lion>,一只鸟放在一只Cage<Bird>.但你可能不会使用Cage<Lion>鸟类,也不会Cage<Bird>使用狮子.

您应该阅读泛型教程.