以下代码是典型适配器对GalleryAdapter / 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,则会发现以下抽象方法。
适配器> 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。为什么?
最佳答案
您在此处发布的抽象方法来自Adapter
界面。 BaseAdapter
实现了它们中的大多数,只剩下您拥有的(当然,您可以覆盖默认实现)。