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的构造函数应该只是采用通用列表 - 所以我不明白错误是抱怨什么.
班级名称是ArrayAdapter<T>.而构造函数签名是ArrayAdapter(Context context, int textViewResourceId, T[] objects).
因此,如果将变量声明为ArrayAdapter<String>,则必须传递String构造函数的最后一个参数的数组.
为了能够传递一个数组DropdownItemData,您的适配器必须是类型ArrayAdapter<DropdownItemData>.
你可以把狮子放在一只Cage<Lion>,一只鸟放在一只Cage<Bird>.但你可能不会使用Cage<Lion>鸟类,也不会Cage<Bird>使用狮子.
您应该阅读泛型教程.
| 归档时间: |
|
| 查看次数: |
3938 次 |
| 最近记录: |