Custom ArrayAdapter中未定义构造函数

时间:2012-11-17 22:46:55

标签: java android constructor android-arrayadapter

我知道这已经解决了一百万次,是的,我已经搜索过,但它对我不起作用。

问题是方法超级不需要正确的参数。

代码:

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

它想要超级(上下文,整数),这不是我想要的

3 个答案:

答案 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)

与你的论据相符。

您打算调用哪一个?这里的TMap<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));   
....