通用适配器构建过程:
1、将共同的重写方法放抽象类中,如下面几个方法:
@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;
}
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方法。
@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());
}});
}
而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. **什么是适配器模式** 适配器模式是一种结构型设计模式,它...
"android打造listview通用适配器"这个主题旨在解决这个问题,通过创建一个可复用的适配器模板,减少代码冗余,提高代码的可维护性和效率。 首先,我们要理解Adapter的作用。Adapter是ListView与数据源之间的桥梁,...
在Android开发中,适配器(Adapter)是连接数据源与UI组件的关键,尤其是在处理列表、网格等可滚动视图时。"Android万能适配器"是一个旨在简化这一过程的解决方案,它通过封装ViewHolder和Adapter,使得在项目中集成...
在Android开发中,Adapter是一个非常重要的组件,它起到了数据与视图之间的桥梁作用。本项目“通用的adapter适配器”旨在...理解并掌握通用适配器的原理和使用,对于提升Android应用的用户体验和开发效率具有积极意义。
因此,在实际开发中,应根据项目需求权衡是否采用此类通用适配器。 总的来说,"Android ListView 万能适配器"是Android开发中一种实用的技术,通过合理地利用它可以大大提高开发效率,同时也能满足复杂UI的需求。在...
本文将详细介绍如何在Android中实现RecyclerView的通用适配器,以简化多类型视图的处理。 首先,RecyclerView的核心在于其适配器(Adapter)和ViewHolder模式。ViewHolder模式用于缓存视图,减少findViewById的调用...
- 这个文件可能包含了一个通用的适配器类库,比如CommonAdapter或者BaseAdapter的实现。 - 可能包括了多种布局类型的示例,如convertView的TypeSwitch机制,根据数据类型动态加载不同的视图。 - 还可能包含了一些...
最后,提到的“通用适配器”是Android开发中的一个常见工具,它通常是一个可以复用的ListView或RecyclerView的Adapter。通用适配器的设计目的是为了减少代码重复,提高代码的复用性。开发者只需提供必要的数据模型和...
对于描述中提到的链接,是CSDN上的一篇文章,作者分享了一个关于如何在Android Studio中创建通用适配器的实例。文章中可能详细介绍了如何创建一个自定义的Adapter,如何在Adapter中处理实体类和Map数据,以及如何在...
本项目提供一款基于Java语言的Android RecyclerView 高效通用适配器设计源码,包含101个文件,涵盖40个Java源文件、26个XML布局文件、16个PNG图片资源、6个Gradle构建脚本以及相关配置文件,旨在实现支持多种...
"Android 万能适配器"的概念旨在创建一个通用的、可复用的适配器模板,以简化开发过程并提高代码的可维护性。下面将详细介绍这个主题,以及如何构建和应用这种适配器。 1. **适配器的原理**: - Android中的适配器...
本练习基于知名Android开发者鸿洋的博客及其通用适配器理论进行实践,旨在帮助开发者深入理解并熟练掌握RecyclerView的使用。 首先,RecyclerView的核心在于它的适配器(Adapter)和布局管理器(LayoutManager)。...
本文将深入探讨如何创建一个自定义的通用适配器,以增强`ListView`的功能性和灵活性。 #### SimpleAdapter与自定义适配器对比 `SimpleAdapter`因其强大的扩展性而备受开发者喜爱,允许将`ListView`的每一项使用...
在本项目中,开发者提供了一个通用的适配器,可以在多种场景下快速实现ListView的数据绑定,提高了开发效率。 这个"万能适配器"通常包含以下关键知识点: 1. **Adapter的原理**:Adapter是Android中的一个接口,它...
"android之listview万能适配器"概念旨在创建一个通用、灵活的适配器,能够适应各种不同的数据结构和界面需求。以下将详细解析这个主题。 1. **适配器的作用**: - 适配器是`ListView`与数据模型之间的桥梁,它将...
在Android开发中,适配器(Adapter)是一个关键组件,它起到了数据源和视图之间的桥梁作用,使得数据显示在ListView、GridView、RecyclerView等组件上。本篇将详细讲解如何构建一个“万能适配器”,以提高代码复用性...