android通用适配器

[size=large]
通用适配器构建过程:

1、将共同的重写方法放抽象类中,如下面几个方法:

[/size]

@Override
public int getCount() {
return mDatas.size();
}
@Override
public T getItem(int position) {
return mDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}


[size=large]

2、getView方法中需要用到bean对象及holderView来初始化listView内容;所以通过抽象类中定义抽象方法、暴露出方法供具体实现:

[/size]



public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder = ViewHolder.get(mContext, convertView, parent, layoutId, position);
convert(holder,getItem(position));
return holder.getConvertView();
}
public abstract void convert(ViewHolder holder,T t);

[size=large]
所以当我使用时、继承这个抽象类,只需要实现具体的convert方法。
[/size]

@Override
public void convert(ViewHolder holder, final Bean bean) {

((TextView)holder.getView(R.id.id_title)).setText(bean.getTitle());
((TextView)holder.getView(R.id.id_desc)).setText(bean.getDesc());
((TextView)holder.getView(R.id.id_time)).setText(bean.getTime());
((TextView)holder.getView(R.id.id_phone)).setText(bean.getPhone());
final CheckBox checkBox = holder.getView(R.id.id_cb);
checkBox.setChecked(bean.isChecked());
checkBox.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
bean.setChecked(checkBox.isChecked());
}});
}


[size=large]
而ViewHolder中的作用就是构建布局并加载内容以及返回listView中具体的view:
[/size]


public static ViewHolder get(Context context,View converView,ViewGroup parent,
int layoutId,int position){
if(converView == null){
return new ViewHolder(context,parent,layoutId,position);
}else{
ViewHolder viewHolder = (ViewHolder)converView.getTag();
viewHolder.mPosition = position;
return viewHolder;
}
}
public View getConvertView() {
return mConvertView;
}




[size=large]
当然,我们还可以添加图片或请求服务器加载图片;这些方法在ViewHolder类中都有具体的实现方法。

[/size]



public ViewHolder setImageBitmap(int viewId,Bitmap bitmap){
ImageView view = getView(viewId);
view.setImageBitmap(bitmap);
return this;
}

public ViewHolder setImageURI(int viewId,String URL){
ImageView view = getView(viewId);
// Imageloader.getInstance().load(view,URL);
return this;
}



[size=large]
所以、以后在使用Adapter类时,我们只需要继承CommonAdapter类,并提供具体的实体;实现暴露给我们的抽象方法;便完成了适配器。


下面附源代码,供参考。
[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值