【发布时间】:2013-11-08 12:52:59
【问题描述】:
以下代码是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 网站 developer.android.com,我们会发现以下抽象方法。
Adapter>BaseAdapter(Adapter的子类)
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。为什么?
【问题讨论】:
-
取决于您的应用要求。
-
这四个方法满足了我们的正常需求,所以我们只覆盖这四个。
-
andriod doc 对他们说了什么?显然取决于需求
-
所以我们不需要实现上述所有抽象方法!我虽然我们需要这样做。
标签: android abstract-class baseadapter