android通用适配器
16lz
2021-01-24
通用适配器构建过程:
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类,并提供具体的实体;实现暴露给我们的抽象方法;便完成了适配器。
下面附源代码,供参考。
更多相关文章
- 使用googleMap获取api方法
- Android中 Rect类
- Android:SeekBar和RatingBar控件
- 监听方法Android之Home键监听封装
- 阅读《Android(安卓)从入门到精通》(11)——下拉列表
- 简单实现RecyclerView版本的竖向翻页效果
- Android(安卓)10 获取剪切板内容
- Android(安卓)处理空列表的方法(必看篇)
- 巨好的入门写精通