2011-11-14 13 views
16

ListAdapterはインターフェイスで、ArrayAdapterはクラスです。したがって、ArrayAdapterのインスタンス化のみが可能です。私は、コードAndroidのArrayAdapterとListAdapterの違いは?

ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songNames); 

を会っしかし、私たちはListAdapterが必要です正確にどのような場所で、

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songsArray); 

だから私は知りたいと同じことを行うことができましたか?

ありがとうございました

答えて

25

これはAndroidに関連していません。しかし、一般的なJavaの質問です。

変数の型としてListAdapterを使用すると、本当にインターフェイスに興味があります。あなたはの特定のメソッドを呼び出すことに興味がないかもしれないListAdapterで利用できません。それは主に、アダプターをビューのリスト・アダプターとして割り当てるだけなので、これが原因です。

具体的なメソッドを実際に呼び出す必要がある場合は、正確なタイプのArrayAdapter<String>を使用することができます。

すべては使用するケースによって異なります。

0

BaseAdapter これは非常に汎用的なアダプタで、あなたが好きなことを行うことができます。 すべてのアダプタの基本クラスです。

ArrayAdapter より完全な実装で、配列や配列リストのデータに適しています。 同様に、データがCursorにある場合に使用する関連CursorAdapterがあります。 これらはどちらもBaseAdapterを拡張します

関連する問題