2011-10-27 11 views
1

Android AutoCompleteのプルダウンメニューに問題があります。カスタムオブジェクトを新しいArrayAdapterに渡そうとしています。新しいArrayAdapterは、ドロップダウンメニューのデータに使用されます。しかし、私はこのコード行のために、次のエラーを取得しています:Android ArrayAdapterコンストラクタは汎用オブジェクトを取得しませんか?

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

The constructor ArrayAdapter<String>(Context, int, DropdownItemData[]) is undefined 

私は型の不一致エラーが出力され、同様にこれを実行してみた:

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

Type mismatch: cannot convert from ArrayAdapter<DropdownItemData> to ArrayAdapter<String> 

ただし、以下のうまく仕事ん:ArrayListのドキュメントの時間に推奨されるよう

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

マイDropdownItemDataクラスは、オブジェクトのtoString()メソッドをオーバーライドしますERE:

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

誰もが、問題は、私が欠けているものを/何であるか知っていますか?ドキュメントによると、私はArrayListのために使用しようとしているコンストラクタは、一般的なリストを取る必要があります - 私はエラーが何について不平を理解していない。

答えて

7

クラス名はArrayAdapter<T>です。コンストラクタの署名はArrayAdapter(Context context, int textViewResourceId, T[] objects)です。

したがって、変数をArrayAdapter<String>と宣言する場合は、コンストラクタの最後の引数としてStringの配列を渡す必要があります。

DropdownItemDataの配列を渡すには、アダプタのタイプがArrayAdapter<DropdownItemData>である必要があります。

Cage<Lion>にライオンを、Cage<Bird>に鳥を入れることができます。しかし、鳥にCage<Lion>を使用したり、ライオンとCage<Bird>を使用したりすることはできません。

generics tutorialをお読みください。

+0

実際、ArrayAdapter に変更してもエラーになります。まだ文字列が必要です。私はこれを反映するために私の質問を更新します。 – DashRantic

+1

変数が* ArrayAdapter として*宣言されていることを確認してください。 ArrayAdapter アダプタ。 // ...; adapter = new ArrayAdapter (_コンテキスト、R.layout.list_item、list_items); –

+1

ArrayAdapter はArrayAdapter と同じではありません – josephus

関連する問題