次のコードは、GalleryView/GridView などの BaseAdapter を拡張する典型的なアダプターです。
public class GalleryImageAdapter extends BaseAdapter
{
private Context mContext;
private Integer[] ImageIds = {
R.drawable.image1,
R.drawable.image2,
R.drawable.image3
};
public GalleryImageAdapter(Context context)
{
mContext = context;
}
public int getCount() {
return mImageIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int index, View view, ViewGroup viewGroup)
{
// TODO Auto-generated method stub
ImageView i = new ImageView(mContext);
i.setImageResource(ImageIds[index]);
i.setLayoutParams(new Gallery.LayoutParams(200, 200));
i.setScaleType(ImageView.ScaleType.FIT_XY);
return i;
}
}
Android の Web サイト developer.android.com にアクセスすると、次の抽象メソッドが見つかります。
Adapter>BaseAdapter(アダプタのサブクラス)
abstract int getCount()
abstract Object getItem(int position)
abstract long getItemId(int position)
abstract int getItemViewType(int position)
abstract View getView(int position, View convertView, ViewGroup parent)
abstract int getViewTypeCount()
abstract boolean hasStableIds()
abstract boolean isEmpty()
abstract void registerDataSetObserver(DataSetObserver observer)
abstract void unregisterDataSetObserver(DataSetObserver observer)
私の質問は、上記の抽象メソッドをすべて実装する必要がありますか? 上記のコード例では、getCount()、getItem()、getItemId、および getView のみを使用しています。なんで?