android listview万能适配器
参考 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万能适配器的更多相关文章
- Xamarin.Android 使用 SimpleAdapter 打造 ListView 万能适配器
第一步:创建 layout1.axml 来展示列表详细内容 <?xml version="1.0" encoding="utf-8"?> <L ...
- Android——打造万能适配器(CommonAdapter)
List<T> : ListView -> Adapter extends BaseAdapter -> ViewHolder ViewHolder CommonAdaper ...
- 打造android偷懒神器———ListView的万能适配器
如果你去做任何一个项目,我相信你都会跟我有一样的经历,最最普遍的就是列表显示ListView,当然,写N个自定义的适配器也是情理之中.虽说程序员本身就是搬砖,做这些枯燥无味的重复的事情也是理所当然,但 ...
- Android之ListView性能优化——一行代码绑定数据——万能适配器
如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
- Android 快速开发系列 打造万能的ListView GridView 适配器
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...
- 打造android偷懒神器———RecyclerView的万能适配器
转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时 ...
- Android进阶笔记10:Android 万能适配器
1. Android 万能适配器 项目中Listview GridView几乎是必用的组件,Android也提供一套机制,为这些控件绑定数据,那就是Adapter.用起来虽然还不错,但每次都 ...
- Android开发之万能适配器
ListView.GridView等等非常多的东西都需要适配器.而如果开发一个app每一个listview都有写一个Adapter的话,那还怎么愉快的玩游戏.. 什么是ViewHolider以及的用法 ...
- android打造万能的适配器(转)
荒废了两天,今天与大家分享一个ListView的适配器 前段时间在学习慕课网的视频,觉得这种实现方式较好,便记录了下来,最近的项目中也使用了多次,节省了大量的代码,特此拿来与大家分享一下. 还是先看图 ...
随机推荐
- kinect for windows sdk
https://msdn.microsoft.com/library/dn799271.aspx
- jenkins+git实现docker持续部署
jenkins所做的事情很简单,就拿我现在的情况来说吧,(1).每次开发完成,我都会push到我的远程仓库:(2).我再将我push到远程仓库的代码pull到我的测试服务器上:(3).在测试服务器上, ...
- ant简述
1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台 --因为 ...
- RFS_点击button按钮之后,RFS出现卡死的问题
[html代码] <html> <head> <title> 主窗口 </title> </head> <body> <d ...
- SUSE Linux 防火墙设置
1.vim /etc/sysconfig/SuSEfirewall2 #编辑防火墙设置 FW_SERVICES_EXT_TCP="22 5901" #开启 ...
- IIS应用程序池添加ASP.NET v4.0
可能在安装.NET Framewrok 4.0之前,IIS就已经装好了,结果在IIS的应用程序池中只有.NET 2.0的Classic .NET AppPool和DefaultAppPool.在使用v ...
- nssstring 转换大小写
//7.将字符串中的字母转换成大写 NSString * str10 = @"china"; NSString * tmpStr1 = [str10 uppercaseString ...
- 手动purge优化器的统计信息与AWR快照,减少对sysaux表空间的占用
1.运行以下脚本,计算当前优化器统计信息和AWR快照表占用sysaux的空间 SQL> conn / as sysdba SQL> @?/rdbms/admin/awrinfo.sql 2 ...
- Java基础之写文件——将多个字符串写入到文件中(WriteProverbs)
控制台程序,将一系列有用的格言写入到文件中. 本例使用通道把不同长度的字符串写入到文件中,为了方便从文件中恢复字符串,将每个字符串的长度写入到文件中紧靠字符串本身前面的位置,这可以告知在读取字符串之前 ...
- 学习OpenCV——ORB简化版&Location加速版
根据前面surf简化版的结构,重新把ORB检测的代码给简化以下,发现虽然速度一样,确实能省好多行代码,关键是有 BruteForceMatcher<HammingLUT>matcher的帮 ...