以下代码是典型适配器对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实现了它们中的大多数,只剩下您拥有的(当然,您可以覆盖默认实现)。

10-08 16:28