您的位置:首页 > 移动开发 > Android开发

Android之Adapter总结

2015-08-04 18:32 369 查看
— ,介绍Adapter

Adapter是数据和UI(View)之间一个桥梁。如下图直观的表达了Data、Adapter、View三者的关系:



二,Adapter的继承关系

有两个adapter的体系,如下:

1、



2、



三,Adapate 的使用

常用方法继承BaseAdapter

private class SoftwareAdapter extends BaseAdapter{

@Override

public int getCount() {

return appInfos.size();

}

@Override

public Object getItem(int position) {

return appInfos.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View arg1, ViewGroup arg2) {

viewHolder Holder =null;

if(arg1 == null){

arg1 = View.inflate(MainActivity.this, R.layout.item_view, null);

Holder = new viewHolder();

//应用的名字

Holder.tv_app_name= (TextView) arg1.findViewById(R.id.tv_appname);

//应用的大小

Holder.tv_app_size= (TextView) arg1.findViewById(R.id.tv_app_size);

//应用的安装位置

Holder.tv_app_location= (TextView) arg1.findViewById(R.id.tv_location);

//应用的图标

Holder.iv_icon = (ImageView) arg1.findViewById(R.id.iv_icon);

arg1.setTag(Holder);

}else{

Holder = (viewHolder) arg1.getTag();

}

AppInfo appInfo = appInfos.get(position);

Holder.tv_app_name.setText(appInfo.getAppName());

Holder.tv_app_size.setText(Formatter.formatFileSize(MainActivity.this,appInfo.getAppSize()));

Holder.iv_icon.setImageDrawable(appInfo.getIcon());

return arg1;

}

}

static class viewHolder{

TextView tv_app_name;

TextView tv_app_size;

TextView tv_app_location;

ImageView iv_icon;

}

有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮。添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上。但是事实并非这样,因为按钮是无法映射的,即使你成功的用布局文件显示出了按钮也无法添加按钮的响应,这时就要研究一下ListView是如何现实的了,而且必须要重写一个类继承BaseAdapter。下面的示例将显示一个按钮和一个图片,两行字如果单击按钮将删除此按钮的所在行。并告诉你ListView究竟是如何工作的。

BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
SimpleAdapter有最好的扩充性,可以自定义出各种效果。
SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: