BaseAdapter详解   

 

 

以下是继承了adapter的子类baseadapter的方法研究

 

public int getCount()    

 

public Object getItem(int position)    

 

public long getItemId(int position)     

public View getView(int position, View convertView, ViewGroup parent)

第一个方法getCount()用来获取后台要输入数据的 多少

例如的getCount()返回的是一个数组长度为5;

所以getView(int position, ... )会先后将自动被调用5次。产生5view

每个view的显示内容可以用提供的position参数来控制输出内容,这5view就是你在Galley里看到的5view

 

第四个方法用来返回一个加载了数据的view,以便于前面控件(listview girdview)的调用

那么我们就来细说第二个和第三个方法的作用?我们需要返回什么值呢?

看看下面的代码

1.              public class ImageAdapter extends BaseAdapter {    

2.                声明 变量

3.              int mGalleryItemBackground;          

5.              private Context mContext;    

6.                //数据初始化 定义一整型数组 里面存放图片资源代码

7.              private Integer[] mImageIds = {    

 

9.              R.drawable.sample_1,      

11.          R.drawable.sample_2,   

 

13.          R.drawable.sample_3,    

 

15.          R.drawable.sample_4,    

 

17.          R.drawable.sample_5,    

 

19.          R.drawable.sample_6,    

 

21.          R.drawable.sample_7 };    

22.            //构造函数

23.          public ImageAdapter(Context c) {          

25.          mContext = c;    

26.           //自定义属性view 显示

27.          TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);               

29.          mGalleryItemBackground = a.getResourceId(                

31.          R.styleable.HelloGallery_android_galleryItemBackground, 0);             

33.          a.recycle();        

35.          }    

36.            //获取当前数据长度  从而控制view的显示多少  

37.          public int getCount() {      

39.          return mImageIds.length;      

41.          }    

42.            //获取当前列表中某个点击图片的索引

43.          public Object getItem(int position) {        

45.          return position;    

47.          }    

48.            //获取当前列表中某个图片所在位置id

49.          public long getItemId(int position) {    

51.          return position;    

53.          }    

54.            //设置每个view的显示内容

55.          public View getView(int position, View convertView, ViewGroup parent) {    

56.            //实例化一个图片显示p_w_picpathview 

57.          ImageView i = new ImageView(mContext);    

58.            //根据position 这个参数来决定显示那一张图片

59.          i.setImageResource(mImageIds[position]);    

60.            //设置p_w_picpath的布局参数  

61.          i.setLayoutParams(new Gallery.LayoutParams(150, 100));    

           i.setScaleType(ImageView.ScaleType.FIT_XY); i.setBackgroundResource(mGalleryItemBackground); return i;              

   }            }    

 

//此次代码分析完毕 getitem()  getitemid()的最大区别是: 

getitem():一个获得了一个索引 用这个可以来获取这个指向的内容(哪一张图片) 

getitemid()则是获取当前位置的一个参数 提供给用户使用