我知道这已经解决了一百万次,是的,我已经搜索过,但它对我不起作用。
问题是方法超级不需要正确的参数。
代码:
public class QuotesArrayAdapter extends ArrayAdapter<Map<Integer,List<String>>> {
private Context context;
Map<Integer,List<String>> Values;
static int textViewResId;
Logger Logger;
public QuotesArrayAdapter(Context context, int textViewResourceId, Map<Integer,List<String>> object) {
super(context, textViewResourceId, object); //<---- ERROR HERE
this.context = context;
this.Values = object;
Logger = new Logger(true);
Logger.l(Logger.TAG_DBG, "ArrayAdapter Inited");
}
Eclipse说的是什么:
Multiple markers at this line
- The constructor ArrayAdapter<Map<Integer,List<String>>>(Context, int, Map<Integer,List<String>>)
is undefined
- The constructor ArrayAdapter<Map<Integer,List<String>>>(Context, int, Map<Integer,List<String>>)
is undefined
它想要超级(上下文,整数),这不是我想要的
答案 0 :(得分:5)
查看ArrayAdapter
可用的构造函数。
ArrayAdapter(Context context, int textViewResourceId)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)
无与你的论据相符。
您打算调用哪一个?这里的T
是Map<Integer,List<String>>
,但您的构造函数的object
参数恰好是该类型。如果要使用需要集合的构造函数之一,则需要从您拥有的单个对象构建该集合。
最简单的方法可能就是使用:
public QuotesArrayAdapter(Context context, int textViewResourceId,
Map<Integer,List<String>> object) {
super(context, textViewResourceId);
add(object);
...
}
答案 1 :(得分:1)
很简单,ArrayAdapter中没有构造函数可以使用Map ...
您需要将其转换为List或基本数组,如果这些选项都不起作用,那么您将不得不扩展BaseAdapter。
答案 2 :(得分:1)
另外,您可以使用Arrays.asList(..)
public QuotesArrayAdapter(Context context, int textViewResourceId, Map<Integer,List<String>> object) {
super(context, textViewResourceId, Arrays.asList(object));
....