《第一行代码》 随手笔记——第三章 UI开发的点点滴滴
2016-03-12 23:30
435 查看
3.5.3提升ListView的运行效率
1、View view;
if (convertView == null) {
view = LayoutInflater.from(getContext()).inflate(resourceId, null);
} else {
view = convertView;
}
2、每次在getView()方法中还是会调用View的findViewById()方法来获取一次控件的实例。我们可以借助一个ViewHolder来对这部分性能进行优化
public class FruitAdapter extends ArrayAdapter<Fruit> {
……
@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.fruitImage = (ImageView) view.findViewById (R.id.fruit_image);
viewHolder.fruitName = (TextView) view.findViewById (R.id.fruit_name);
view.setTag(viewHolder); // 将ViewHolder存储在View中
} else {
view = convertView;
viewHolder = (ViewHolder) view.getTag(); // 重新获取ViewHolder
}
viewHolder.fruitImage.setImageResource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
return view;
}
class ViewHolder {
ImageView fruitImage;
TextView fruitName;
}
}
1、View view;
if (convertView == null) {
view = LayoutInflater.from(getContext()).inflate(resourceId, null);
} else {
view = convertView;
}
2、每次在getView()方法中还是会调用View的findViewById()方法来获取一次控件的实例。我们可以借助一个ViewHolder来对这部分性能进行优化
public class FruitAdapter extends ArrayAdapter<Fruit> {
……
@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.fruitImage = (ImageView) view.findViewById (R.id.fruit_image);
viewHolder.fruitName = (TextView) view.findViewById (R.id.fruit_name);
view.setTag(viewHolder); // 将ViewHolder存储在View中
} else {
view = convertView;
viewHolder = (ViewHolder) view.getTag(); // 重新获取ViewHolder
}
viewHolder.fruitImage.setImageResource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
return view;
}
class ViewHolder {
ImageView fruitImage;
TextView fruitName;
}
}
相关文章推荐
- UITableView介绍 之 复杂cell的高度计算
- 1016-06-首页20-封装工具条---UITableView控件距离顶部的间距问题----cell选中时的背景颜色设置
- jsp request跳转页面和response跳转页面
- 232. Implement Queue using Stacks
- Integer.parseInt(String s) 和 Integer.valueOf(String s) 的区别
- 用UIScrollView,UIPageControl来实现滚动视图。
- iOS完美版的UIScrollView无缝循环:你值得一看
- 从sqlcommandbuilder引出的小想法
- 用UIpickView实现省市的联动
- IOS_压缩图片UIImage
- 用Source Insight追踪Arduino的setup和loop
- 1562 Guess the number
- 625A.Guest From the Past
- 62. 63. Unique Paths 64. Minimum Path Sum
- 设计模式-Builder模式
- JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类
- UIImage
- Java 1.6 AbstractQueuedSynchronizer源码解析
- UIScrollViewDelegate
- 626A.Robot Sequence