Androidアプリに関する質問です。

カスタムListViewでListを作成する場合、
Listの要素を管理するadapterを拡張する必要があると思います。

このとき、クラスの継承先が「BaseAdapter」の場合と「ArrayAdapter<String>」の場合がありますが、
この違いはなんでしょうか?
ご教授の程、よろしくお願いいたします。

▼BaseAdapterを継承してAdapterを拡張している例
http://android.keicode.com/basics/ui-listview-customize.php

▼ArrayAdapter<String>を継承してAdapterを拡張している例
http://ra-i-zu.blogspot.com/2011/03/listview-part2.html

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/05/28 04:11:45
  • 終了:2011/06/04 04:15:03

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4443ベストアンサー獲得回数18252011/05/28 19:16:58

ポイント60pt

http://developer.android.com/reference/android/widget/ArrayAdapt...

ArrayAdapter のドキュメントを見れば分かりますが、こいつは BaseAdapter から派生してます。


質問であげた BaseAdapter を使ってるコードで、getCount() や getItem() というメソッドを定義してますが、

ArrayAdapter を使えば、自前で実装する必要がありません。

逆に言うと、ArrayAdapter がデータを抱えている List を隠してます。


BaseAdapter を使ってる方のコードは、Adapter の外にある List をそのまま使いたいので、List を抱えているクラスの inner クラスとして BaseAdapter の実装を作っている、ということになります。


ArrayAdapter を使ってる方は、ArrayAdapter が内部でコピーを持つのではなく、参照を抱えているだけだ、というのを前提に書かれてますね。

ArrayAdapter が内部で抱えている全データを吐き出してくれるメソッドがあれば良かったのに、という感じでしょうか。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません