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次。产生5个view。
每个view的显示内容可以用提供的position参数来控制输出内容,这5个view就是你在Galley里看到的5个view。
第四个方法用来返回一个加载了数据的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()则是获取当前位置的一个参数 提供给用户使用