0

私はこれが何百万回も解決されたことを知っています、そしてはい私は検索しました、しかしそれは私にとってはうまくいきません。

問題は、メソッドsuperが適切な引数を必要としないことです。

コード:

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

それはsuper(Context、int)を望んでいます、そしてそれは私が望むものではありません

4

3 に答える 3

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パラメーターはまさにそのタイプです。コレクションを必要とするコンストラクターの1つを使用する場合は、取得した単一のオブジェクトからそのコレクションを構築する必要があります。

最も簡単なアプローチは、おそらく次を使用することです。

public QuotesArrayAdapter(Context context, int textViewResourceId,
                          Map<Integer,List<String>> object) {
    super(context, textViewResourceId);
    add(object);
    ...
}
于 2012-11-17T22:49:24.273 に答える
1

非常に単純に、Mapを取得するArrayAdapterにはコンストラクターがありません...

リストまたはプリミティブ配列に変換する必要があります。これらのオプションのいずれも機能しない場合は、代わりにBaseAdapterを拡張する必要があります。

于 2012-11-17T22:50:20.297 に答える
1

さらに、あなたは使用することができますArrays.asList(..)

public QuotesArrayAdapter(Context context, int textViewResourceId, Map<Integer,List<String>> object) {
    super(context, textViewResourceId,  Arrays.asList(object));   
.... 
于 2012-11-17T22:58:34.563 に答える