Android初学之ListView对象的优化
来源:互联网 发布:php eval 替代方法 编辑:程序博客网 时间:2024/06/09 17:08
<h1>安全卫士中的listView优化</h1><pre><code>/** * 有多少个条目被显示,这个方法就会被调用多少次 */ @Override public View getView(int position, View convertView, ViewGroup parent) { //把一个布局文件转化成view对象 View view = View.inflate(getApplicationContext(), R.layout.list_item_callsms, null); TextView tv_black_number = (TextView) view.findViewById(R.id.tv_black_number); TextView tv_block_mode = (TextView) view.findViewById(R.id.tv_block_mode); tv_black_number.setText(infos.get(position).getNumber()); String mode = infos.get(position).getMode(); if("1".equals(mode)) { tv_block_mode.setText("电话拦截"); }else if("2".equals(mode)) { tv_block_mode.setText("短信拦截"); }else { tv_block_mode.setText("全部拦截"); } return view; }}</code></pre><p>对其进行优化,复用回收对象后:</p><pre><code> /** * 有多少个条目被显示,这个方法就会被调用多少次 */ @Override public View getView(int position, View convertView, ViewGroup parent) { View view; if(convertView==null) { //把一个布局文件转化成view对象 view = View.inflate(getApplicationContext(), R.layout.list_item_callsms, null); }else { view = convertView; } TextView tv_black_number = (TextView) view.findViewById(R.id.tv_black_number); TextView tv_block_mode = (TextView) view.findViewById(R.id.tv_block_mode); tv_black_number.setText(infos.get(position).getNumber()); String mode = infos.get(position).getMode(); if("1".equals(mode)) { tv_block_mode.setText("电话拦截"); }else if("2".equals(mode)) { tv_block_mode.setText("短信拦截"); }else { tv_block_mode.setText("全部拦截"); } return view; }</code></pre><h2>继续优化</h2><pre><code> /** * 有多少个条目被显示,这个方法就会被调用多少次 */ @Override public View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder holder; //减少内存中view对象创建的个数 if(convertView==null) { //把一个布局文件转化成view对象 view = View.inflate(getApplicationContext(), R.layout.list_item_callsms, null); holder = new ViewHolder(); holder.tv_number = (TextView) view.findViewById(R.id.tv_black_number); holder.tv_mode = (TextView) view.findViewById(R.id.tv_block_mode); //当孩子生出来的时候找到他们的引用,存放在记事本,放在父亲的口袋 view.setTag(holder); }else { view = convertView; holder = (ViewHolder) view.getTag(); } //减少子孩子查询的次数、内存中对象的地址。 holder.tv_number.setText(infos.get(position).getNumber()); String mode = infos.get(position).getMode(); if("1".equals(mode)) { holder.tv_mode.setText("电话拦截"); }else if("2".equals(mode)) { holder.tv_mode.setText("短信拦截"); }else { holder.tv_mode.setText("全部拦截"); } return view; }/** * view对象的容器 * 记录孩子的内存地址 * 相当于一个记事本 * @author MS * */class ViewHolder{ TextView tv_number; TextView tv_mode;}</code></pre>
0 0
- Android初学之ListView对象的优化
- android 之listview的优化
- Android之ListView的优化
- Android之ListView的优化
- Android之ListView优化
- Android之ListView优化
- android ListView的优化之 static ViewHolder
- Android的ListView之优化1
- Android的ListView之优化2
- Android学习之ListView的优化01
- Android之ListView的简单优化两步走
- Android:ListView优化之具有弹性的ListView
- Android开发之ListView详解 以及简单的listView优化
- Android初学之listView分批加载数据
- 初学Android之PullToRefresh+listview+ViewPager
- Android ListView的优化
- Android ListView 的优化
- android ListView的优化
- Oracle开机一键启动
- 再探Objective-C.7
- JavaScript 函数参数传递到底是值传递还是引用传递
- 【小话设计模式】行为型之责任链模式
- AndEngine 《Android游戏开发实践指南》之“吸血鬼游戏”实例学习(一)
- Android初学之ListView对象的优化
- 笔试面试的小结 反
- 理论力学单自由度小阻尼受迫振动阻尼系数近似公式的推到
- LEETCODE: Longest Substring Without Repeating characters
- 读取android目录下本地文件
- 社交招聘网络Linkedin的使用体验(HR招聘篇4)
- 2014腾讯实习一面面试题
- 第一个Kinect For Windows V2.0 基于基础控件的Windows Store应用Demo
- 意念控制智能车项目进展2014.11.29-30