Android listview 的优化
2015-12-18 17:15
429 查看
接[Android listview的应用][1]
在我们上一篇[Android listview的应用][1]中,我们的adapter中的getView()方法中每次都将布局重新加载一遍,这样就会导致我们的listview的运行效率很低.
[1]:http://www.cnblogs.com/stareblankly/p/5057340.html
如果我们称上一篇是逗比式,那么接下来就是普通式.
可以看到,在代码中我们对convertView进行了判断,只有当convertView为空的时候,我们才去加载布局,不过不为空则直接对convertView进行重用,这样就大大的提高了ListView的运行效率.不过其实我们这部分代码其实还是可以继续进行优化的,接下来就是ListView的文艺式.
在这里我们定义了一个内部类ViewHolder用来存放控件,然后把ViewHolder存储在view中,这样每次加载的时候就不用重新根据ID来获取控件来,这样我们listview运行的效率又快乐很多.
在我们上一篇[Android listview的应用][1]中,我们的adapter中的getView()方法中每次都将布局重新加载一遍,这样就会导致我们的listview的运行效率很低.
[1]:http://www.cnblogs.com/stareblankly/p/5057340.html
如果我们称上一篇是逗比式,那么接下来就是普通式.
@Override public View getView(int position, View convertView, ViewGroup parent) { Fruit fruit=getItem(position); View view; if (convertView==null) { view=LayoutInflater.from(getContext()).inflate(resourceid, null); }else { view=convertView; } TextView tv=(TextView) view.findViewById(R.id.fruit_name); ImageView iv=(ImageView) view.findViewById(R.id.furit_image); iv.setImageResource(fruit.getImageId()); tv.setText(fruit.getName()); return view; }
可以看到,在代码中我们对convertView进行了判断,只有当convertView为空的时候,我们才去加载布局,不过不为空则直接对convertView进行重用,这样就大大的提高了ListView的运行效率.不过其实我们这部分代码其实还是可以继续进行优化的,接下来就是ListView的文艺式.
@Override public View getView(int position, View convertView, ViewGroup parent) { Fruit fruit=getItem(position); View view; ViewHolder viewHolder; if (convertView==null) { view=LayoutInflater.from(getContext()).inflate(resourceid, null); viewHolder=new ViewHolder(); viewHolder.iv=(ImageView) view.findViewById(R.id.furit_image); viewHolder.tv=(TextView) view.findViewById(R.id.fruit_name); view.setTag(viewHolder); //将ViewHolder存储在view中 }else { view=convertView; viewHolder=(ViewHolder) view.getTag(); //重新获取viewHolder } viewHolder.iv.setImageResource(fruit.getImageId()); viewHolder.tv.setText(fruit.getName()); return view; } class ViewHolder{ ImageView iv; TextView tv; }
在这里我们定义了一个内部类ViewHolder用来存放控件,然后把ViewHolder存储在view中,这样每次加载的时候就不用重新根据ID来获取控件来,这样我们listview运行的效率又快乐很多.
相关文章推荐
- android toast 时间
- Android等宽字体
- Android等宽字体
- Android中常见的热门标签的流式布局的实现
- Android实战 - 音心播放器 (MusicListActivity - 分类信息界面实现)
- Android Context详解
- 设计模式---Android中的观察者模式
- android-Sensors
- Android之zxing二维码生成与识别
- Android近场通信---高级NFC(二)
- Android SQLite高级操作之泛型对象操作
- 有关于TextView 利用到在内容中添加图片的效果
- Android应用发布后的统计——百度移动统计的应用
- Android:Content Provider数据共享
- Android PopupWindow
- Android开发经验总结
- Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory Android
- android cordova h5总结
- Intent实现页面的跳转和返回
- Android EditText的设置以及软键盘的各种设置