通用适配器构建过程:

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


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



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




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);


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

@Overridepublic 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(){@Overridepublic void onClick(View v) {bean.setChecked(checkBox.isChecked());}});}



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


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;}




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



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;}




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



下面附源代码,供参考。

更多相关文章

  1. 使用googleMap获取api方法
  2. Android中 Rect类
  3. Android:SeekBar和RatingBar控件
  4. 监听方法Android之Home键监听封装
  5. 阅读《Android(安卓)从入门到精通》(11)——下拉列表
  6. 简单实现RecyclerView版本的竖向翻页效果
  7. Android(安卓)10 获取剪切板内容
  8. Android(安卓)处理空列表的方法(必看篇)
  9. 巨好的入门写精通

随机推荐

  1. Android培训班(16)
  2. android anr分析方法
  3. android APK反编译及代码混淆
  4. android api code 学习之provider包
  5. Android(安卓)如何处理Search下的suggest
  6. Android(安卓)多媒体开发相关技巧
  7. Android开发——Android(安卓)Studio的ND
  8. android Google Map获取地理位置信息的方
  9. Android(安卓)frame by frame animation
  10. onInterceptTouchEvent和onTouchEvent调