谁能简单的介绍下适配器的工作原理?

txy4349716 2010-11-21 09:45:30
public class ImageAdapter extends BaseAdapter
{
private Context mContext;
private Integer[] mImageIds =
{
R.drawable.img1,
R.drawable.img2,
R.drawable.img3,
R.drawable.img4,
R.drawable.img5,
R.drawable.img6,
R.drawable.img7,
R.drawable.img8,
};
public ImageAdapter(Context c)
{
mContext = c;
}

public int getCount()
{
System.out.println("-------------------------------getCount: " + mImageIds.length);
return mImageIds.length;
}
public Object getItem(int position)
{
System.out.println("----------------------getItem");
return position;
}
public long getItemId(int position)
{
System.out.println("--------------------getItemId");
return position;
}

public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageview = null ;
if(convertView == null){
imageview = new ImageView(mContext) ;
System.out.println("------------------------1");
}
else{
System.out.println("------------------------2") ;
imageview = (ImageView)convertView ;
}

imageview.setImageResource(mImageIds[position]);
imageview.setLayoutParams(new Gallery.LayoutParams(120, 120));
imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
System.out.println("----------------3");
return imageview;
}
}



运行后打出的结果是:
-------------------------------getCount: 8
-------------------------------getCount: 8
--------------------getItemId
--------------------getItemId
------------------------1
----------------3
--------------------getItemId
------------------------1
----------------3
------------------------1
----------------3
--------------------getItemId

点击第二张图片打印出:
--------------------getItemId
------------------------1
----------------3
--------------------getItemId
--------------------getItemId
谁能告诉我它是怎么得来的,想学得明白点!!!

...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rollrock1987 2010-11-21
  • 打赏
  • 举报
回复
订你个肺 加油
ameyume 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dinjay 的回复:]

每次显示的时候其实是去调用getView,然后根据cout数量来一个一个显示出来。假如你只加了3个item,而且正好一屏显示,那就是会循环3次getView。3次是getcout出来的。
所以这里的count就是你drawable的数组元素个数。因为是return mImageIds.length;
其实只要知道重写的几个get方法的含义就可以了,比如你点击的时候,系统会告诉你对应item的……
[/Quote]
正解
dinjay 2010-11-21
  • 打赏
  • 举报
回复
每次显示的时候其实是去调用getView,然后根据cout数量来一个一个显示出来。假如你只加了3个item,而且正好一屏显示,那就是会循环3次getView。3次是getcout出来的。
所以这里的count就是你drawable的数组元素个数。因为是return mImageIds.length;
其实只要知道重写的几个get方法的含义就可以了,比如你点击的时候,系统会告诉你对应item的信息,所以就去调用getitemid
txy4349716 2010-11-21
  • 打赏
  • 举报
回复
没有人知道么???帮忙解决下撒~~~我是个新手

80,489

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧