Android——ViewHolder简洁写法
来源:互联网 发布:手机全局透明软件 编辑:程序博客网 时间:2024/06/02 05:29
一般我们在使用ListView时,需要给ListView指定一个自定义的Adapter,其中要使用到ViewHolder来优化ListView,一般的写法是这样的:
//内部类 static class ViewHolder{ private TextView tv; //等等一堆属性... //提供访问和设置属性的方法 public TextView getTv(){ return tv; }; public void setTv(TextView v){ tv=v; } } //然后在你getView的方法里面这样用 @Override public View getView(int positio,View convertView,ViewGroup parent){ if(convertView==null)[ convertView=View.inflate(getContext(),R.layout.item_list,null); ViewHolder vh=new ViewHolder(); //给ViewHolder设置属性 vh.setTv(convertView.findViewById(R.id.tv)); convertView.setTag(vh); } //取出ViewHolder ViewHolder vh=(ViewHolder)convertView.getTag(); //取出控件进行赋值 vh.getTv().setText("item"+position); return convertView; }
这样写一般是没什么问题的,那么当一个应用中有许多的Adapter要写的时候,需要各写一个ViewHolder。很麻烦是吧。介绍一种简洁的ViewHolder的写法(非原创):
//单独做一个通用的ViewHolder工具类public class ViewHolder{ //提供一个静态的方法 public static <T extends View> T get(View v,int id){ //采用一个SparseArray保存键值对(SparseArray是一个简单的<int,Object>键值对保存对象) SparseArray arr=v.getTag(); if(arr==null){ arr=new SparseArray(); //以前tag里面我们存的是ViewHolder,现在我们存的是一个SparseArraya v.setTag(arr); } //获得子控件 View childView=arr.get(id); if(childView==null){ childView=v.findViewById(id); //SparseArraya存的是<id,View> arr.put(id,childView); } return childView; }}
好了,使用的使用的时候简单多了
@Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView==null) convertView=View.inflate(getContext(),R.layout.item_list,null); TextView tvTitle=ViewHolder.get(convertView, R.id.tv_title); TextView tvContent=ViewHolder.get(convertView, R.id.tv_content); tvTitle.setText(getItem(position)+":->>>title"); tvContent.setText(getItem(position)+"->>>content"); return convertView; }
0 0
- Android——ViewHolder简洁写法
- android ViewHolder简洁写法 实用
- android ViewHolder模式超简洁写法
- Android ViewHolder模式超简洁写法
- android ViewHolder模式超简洁写法
- android ViewHolder模式超简洁写法
- android ViewHolder模式超简洁写法
- ViewHolder的 简洁写法
- ViewHolder的简洁写法
- ViewHolder的简洁写法
- ViewHolder的简洁写法
- ViewHolder简洁写法
- ViewHolder的简洁写法
- ViewHolder的简洁写法
- viewHolder模式简洁写法
- Android中ViewHolder模式超简洁写法(一劳永逸)
- android ListView优化之ViewHolder的超简洁写法
- Android ViewHolder通用写法(简洁、减少代码量)
- compile sslsplit
- keepalived应用
- POJ 1006_Biorhythms
- uwsgi启动
- apache服务器
- Android——ViewHolder简洁写法
- 第1章第1节练习题4 有序表删除指定区间值
- 剑指offer-数值的整数次方
- mysql的默认排序
- ss
- RabbitMQ基础知识
- 如何实现一个搜索引擎(3):tf-idf权重 How to Implement a Search Engine Part 3: Ranking tf-idf
- 在unity通过组件名称(string)添加脚本
- 【C++】:用sort对string类型进行排序