listview--Java泛型应用之打造Android万能ViewHolder-超简洁写法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了listview--Java泛型应用之打造Android万能ViewHolder-超简洁写法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2354字,纯文字阅读大概需要4分钟。
内容图文
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/52808656 【DylanAndroid的csdn博客】
在ListView的Adapter中的getView()方法中的繁琐写法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context)
.inflate(R.layout.item, parent, false);
viewHolder = new ViewHolder();
viewHolder.name = (TextView) convertView.findViewById(R.id.name);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.name.setText("sss");
return convertView;
}
private static class ViewHolder
{
TextView name;
}
先了解一下SparseArray
SparseArray(稀疏数组).他是Android内部特有的api,标准的jdk是没有这个类的.在Android内部用来替代HashMap<Integer,E>这种形式,使用SparseArray更加节省内存空间的使用,SparseArray也是以key和value对数据进行保存的.使用的时候只需要指定value的类型即可.并且key不需要封装成对象类型.
最后经过优化和简化后的代码
- 代码
/**
* Created by yuandl on 2016-10-13.
*/
import android.util.SparseArray;
import android.view.View;
/**
* 万能的ViewHolder
*
* @author
*/
public class CommonViewHolder {
/**
* @param view 所有缓存View的根View
* @param id 缓存View的唯一标识
* @return
*/
public static <T extends View> T get(View view, int id) {
SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
//如果根view没有用来缓存View的集合
if (viewHolder == null) {
viewHolder = new SparseArray<View>();
view.setTag(viewHolder);//创建集合和根View关联
}
View chidlView = viewHolder.get(id);//获取根View储存在集合中的孩纸
if (chidlView == null) {//如果没有改孩纸
//找到该孩纸
chidlView = view.findViewById(id);
viewHolder.put(id, chidlView);//保存到集合
}
return (T) chidlView;
}
}
- 用法(可以看到省去了好多代码)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context)
.inflate(R.layout.item, parent, false);
}
TextView name= CommonViewHolder.get(convertView, R.id.name);
name.setText("sss");
return convertView;
}
GitHub源码地址:https://github.com/linglongxin24/ListViewUpdate/blob/master/app/src/main/java/cn/bluemobi/dylan/listviewupdate/adapter/CommonViewHolder.java
--------------------- 本文来自 DylanAndroid 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/linglongxin24/article/details/52808656?utm_source=copy
内容总结
以上是互联网集市为您收集整理的listview--Java泛型应用之打造Android万能ViewHolder-超简洁写法全部内容,希望文章能够帮你解决listview--Java泛型应用之打造Android万能ViewHolder-超简洁写法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。