人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: sasaki0822
●カテゴリ:コンピュータ インターネット
✍キーワード:Adapter Android アプリ カスタム クラス
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●60ポイント ベストアンサー

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ