[size=large]
通用适配器构建过程:
1、将共同的重写方法放抽象类中,如下面几个方法:
[/size]
[size=large]
2、getView方法中需要用到bean对象及holderView来初始化listView内容;所以通过抽象类中定义抽象方法、暴露出方法供具体实现:
[/size]
[size=large]
所以当我使用时、继承这个抽象类,只需要实现具体的convert方法。
[/size]
[size=large]
而ViewHolder中的作用就是构建布局并加载内容以及返回listView中具体的view:
[/size]
[size=large]
当然,我们还可以添加图片或请求服务器加载图片;这些方法在ViewHolder类中都有具体的实现方法。
[/size]
[size=large]
所以、以后在使用Adapter类时,我们只需要继承CommonAdapter类,并提供具体的实体;实现暴露给我们的抽象方法;便完成了适配器。
下面附源代码,供参考。
[/size]
通用适配器构建过程:
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]