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

Android基础-自定义适配器

2013-10-14 19:47 225 查看
ArrayAdapter和SimpleAdapter无法满足很多要求,比如说这两种适配器无法对ListView中每一个item中的具体控件进行监听,也就是说这两种适配器只能对item进行监听,为此,我们需要另一种适配器来监听item中的控件,这类适配器叫做BaseAdapter,也是自定义适配器。

第一步:

需要新建一个类,来继承BaseAdapter,并重载BaseAdapter的方法,一般会重载四个方法,分别为getCount,getItem,getItemId和getView,其中getCount和getView是比较重要的,getCount是用来得到该ListView中到底有多少个条目,而getView是根据getCount得到的条目数来绘制ListView中的每一项。

第二步:

修改getCount方法和getView方法。getCount方法比较简单,返回ListView的长度就可以了。getView有三个参数,分别为int,View,ViewGroup类型,参数一是绘制的行数,参数二是绘制的视图(该ListView的每一项布局),参数三是View的合集。然后得到LayoutInflater对象,通过flater.inflate(R.layout.example,
null);方法得到View对象,对View对象进行findViewById操作得到每个控件类型,进行操作。

一下是BaseAdapter子类的代码:

class MyAdapter extends BaseAdapter {
private LayoutInflater inflater;
private List<Map<String,Object>> data;
private TextView largeText;
private TextView smallText;
private ImageView imageView;
private List<View> holder;

public MyAdapter(Context context,List<Map<String,Object>> data){
this.inflater = LayoutInflater.from(context);
this.data = data;
}

public int getCount() {
return data.size();
}

public Object getItem(int arg0) {
return data.get(arg0);
}

@Override
public long getItemId(int arg0) {
return arg0;
}

@Override
public View getView(int p, View v, ViewGroup parent) {
if(v == null){
v = inflater.inflate(R.layout.custom_list_view, null);
largeText= (TextView)v.findViewById(R.id.large_text);
smallText= (TextView)v.findViewById(R.id.small_text);
imageView= (ImageView)v.findViewById(R.id.image);
//至此,则与MainActivity中操作控件没有多大区别
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: