参考    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. SpringMVC 406 accept请求错误,没有加入将json序列化的包

    在spring中使用@responsebody发现请求报406错误 jar包中缺少json序列化的相关的包!

  2. iOS:项目中用到的Cookie

    1.介绍: 做了这么长时间开发,Cookie真是用的不多,可是现在不一样了,这次的项目我用到了Cookie.其实,Cookie的使用在项目中愈加的频繁,一般情况下,提供的接口是用Cookie来识别用户 ...

  3. jQuery对象与DOM对象之间的转换(转)

    什么是jQuery对象? —就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可以使用jQuery里的方法. 比如: $(“#test”).html()   意思 ...

  4. selenium 基本了解

    Selenium的界面 白色:还未执行 浅青色:动作成功 深青色:判断成功 浅粉红色:判断失败,但不影响测试案例的运行 深粉红色:判断失败,且测试案例无法正常运行 Command 存在的命令 Acti ...

  5. [Slimdx]顶点和索引缓冲,绘制了2个分离的三角形

    定义网格顶点和索引缓冲,绘制了2个分离的三角形. using System; using System.Drawing; using RGeos.SlimScene.Core; using SlimD ...

  6. wContour

    一个等高线生成类库,很强大,C#的,不过源码好像不公开,可以直接使用Dll.在气象领域用的比较多.

  7. python 上传下载文件

    server.py #!/usr/bin/env python # -*- coding:utf- -*- import SocketServer import os class MySocketSe ...

  8. javascript设计模式学习之十四——中介者模式

    一.中介者模式的定义和应用场景 中介者模式的作用在于解除对象之间的紧耦合关系,增加一个中介者之后,所有对象都通过中介者来通信,而不是互相引用,当一个对象发生变化的时候,仅需要通知中介者即可.从而将网状 ...

  9. yum只下载安装需要的rpm包

    1.安装yum的插件yum-downloadonly yum -y install yum-downloadonly 2.使用 yum -y install somepackges --downloa ...

  10. update kernel

    1,version 2,command First, verify the current kernel version: $ uname -r 2.6.32-358.el6.x86_64 Befor ...