参考    Android 快速开发系列 打造万能的ListView GridView 适配器    Hongyang

public class CommonViewHolder {

    private Context context;
private int position;
private int layoutId; private View convertView;
private SparseArray<View> views; private CommonViewHolder(Context context, ViewGroup parent, int layoutId, int position) {
this.context = context;
this.layoutId = layoutId;
this.position = position;
views = new SparseArray<>();
convertView = View.inflate(context, layoutId, null);
convertView.setTag(this);
} public static CommonViewHolder getInstance(Context context, ViewGroup parent, int resId, int position, View convertView) {
if (convertView == null) {
return new CommonViewHolder(context, parent, resId, position);
} else {
CommonViewHolder holder = (CommonViewHolder) convertView.getTag();
holder.position = position;
return holder;
}
} public int getPosition() { return position; } public View getConvertView() { return convertView; } public <T extends View> T getView(int viewId) {
View view = views.get(viewId);
if (view == null) {
view = this.convertView.findViewById(viewId);
views.put(viewId, view);
}
return (T) view;
} public CommonViewHolder setText(int viewId, String text) {
((TextView) getView(viewId)).setText(text);
return this;
} public CommonViewHolder setImageResource(int viewId, int resId) {
((ImageView) getView(viewId)).setImageResource(resId);
return this;
} public CommonViewHolder setOnClickListener(int viewId, View.OnClickListener onClickListener) {
getView(viewId).setOnClickListener(onClickListener);
return this;
}
}
public abstract class CommonAdapter<T> extends BaseAdapter {
private List<T> datas;
private Context context;
private int layoutId; public CommonAdapter(Context context, List<T> datas, int layoutId) {
super();
this.datas = datas;
this.context = context;
this.layoutId = layoutId;
} @Override
public int getCount() {return datas == null ? 0 : datas.size(); } @Override
public T getItem(int position) {return datas.get(position); } @Override
public long getItemId(int position) {return position;} @Override
public View getView(int position, View convertView, ViewGroup parent) {
CommonViewHolder holder = CommonViewHolder.getInstance(context, parent, layoutId, position, convertView);
convert(holder, datas.get(position));
return holder.getConvertView();
} public abstract void convert(CommonViewHolder holder, T t);
}

android listview万能适配器的更多相关文章

  1. Xamarin.Android 使用 SimpleAdapter 打造 ListView 万能适配器

    第一步:创建 layout1.axml 来展示列表详细内容 <?xml version="1.0" encoding="utf-8"?> <L ...

  2. Android——打造万能适配器(CommonAdapter)

    List<T> : ListView -> Adapter extends BaseAdapter -> ViewHolder ViewHolder CommonAdaper ...

  3. 打造android偷懒神器———ListView的万能适配器

    如果你去做任何一个项目,我相信你都会跟我有一样的经历,最最普遍的就是列表显示ListView,当然,写N个自定义的适配器也是情理之中.虽说程序员本身就是搬砖,做这些枯燥无味的重复的事情也是理所当然,但 ...

  4. Android之ListView性能优化——一行代码绑定数据——万能适配器

    如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...

  5. Android 快速开发系列 打造万能的ListView GridView 适配器

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...

  6. 打造android偷懒神器———RecyclerView的万能适配器

    转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时 ...

  7. Android进阶笔记10:Android 万能适配器

    1. Android 万能适配器      项目中Listview GridView几乎是必用的组件,Android也提供一套机制,为这些控件绑定数据,那就是Adapter.用起来虽然还不错,但每次都 ...

  8. Android开发之万能适配器

    ListView.GridView等等非常多的东西都需要适配器.而如果开发一个app每一个listview都有写一个Adapter的话,那还怎么愉快的玩游戏.. 什么是ViewHolider以及的用法 ...

  9. android打造万能的适配器(转)

    荒废了两天,今天与大家分享一个ListView的适配器 前段时间在学习慕课网的视频,觉得这种实现方式较好,便记录了下来,最近的项目中也使用了多次,节省了大量的代码,特此拿来与大家分享一下. 还是先看图 ...

随机推荐

  1. 微信域名weixin.com天价成交!是腾讯吗?

    据业内人士爆料,“微信”双拼域名weixin.com已于今天交易了,成交价格8位数.如此大手笔,神秘买家会是腾讯吗? 通过查询该域名的whois信息,最近一次的更新时间显示为今年4月13日,注册邮箱信 ...

  2. java类的加载、链接、初始化

    JVM和类的关系 当我们调用JAVA命令运行某个java程序时,该命令将会启动一条java虚拟机进程,不管该java程序有多么复杂,该程序启动了多少个线程,它们都处于该java虚拟机进程里.正如前面介 ...

  3. passport 自动取密码

    django settings.py """ Django settings for password project. Generated by . For more ...

  4. java万物皆对象

    我们以Dom对象的形式 可以CRUD xml文件或xml字串(经流把xml文件读出转成字串) 我们以JsonObject对象的形式 可以CRUD json字串 还有正则表达式.ORM都是.

  5. 定制对ArrayList的sort方法的自定义排序

    java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将Arr ...

  6. Swift游戏实战-跑酷熊猫 14 熊猫打滚

    这节内容我们来实现熊猫打滚.思路是这样的,当熊猫起跳时记录他的Y坐标,落到平台上的时候再记录它的Y坐标.两个坐标之间的差要是大于一定数值就判断它从高处落下要进行打滚缓冲.至此跑酷熊猫已经像一个游戏的样 ...

  7. OLTP与OLAP的差异

    OLTP与OLAP的差异 系统类型 OLTP(在线交易系统) OLAP(联机分析系统),DW(数据仓库) 数据来源 操作数据,OLTP通常是原始性数据源 联合型数据:OLAP数据来源于其他OLTP系统 ...

  8. Leetcode: UTF-8 Validation

    A character in UTF8 can be from 1 to 4 bytes long, subjected to the following rules: For 1-byte char ...

  9. Codeforce Round #226 Div2

    这次CF虽然,但是- - 第一题看了很久的题目意思额,虽然慢了点- -,但还算没出错,还学会了hack了- -,还+了100- - 第二题想了很久- -...后来发现可以暴力- -,哎 第三题本来也应 ...

  10. Grunt 自动化部署之css、image、javascript、html压缩Gruntfile.js配置

    grunt.initConfig方法 用于模块配置,它接受一个对象作为参数.该对象的成员与使用的同名模块一一对应. 每个目标的具体设置,需要参考该模板的文档.就cssmin来讲,minify目标的参数 ...