<table class="java">
<tr class="li1"><td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 commondN 选择 自动生成get and set 一.为适配的 FruitAdapter 中的 getView方法每次都将布局重新加载了一遍, 当滚动时,这个机制会成为性能的瓶颈,getView方法中还有一个 convertView参数, 这个参数用于将之前加载好的布局进行缓存,质变之后可以复用。代码: FruitAdapter ArrayAdapterFruit @Override getView position, convertView,ViewGroup parent Fruit fruit getItemposition view convertView view LayoutInflater.getContext.resourceId, view convertView ImageView fruitImage ImageView view.R.. fruitImage.fruit. view 二.通过以上方法进行判断,利用了已有的缓存,但是每次在getView方法中还是会 调用 的 findViewById方法来获取一次控件的实例。通过创建一个内部类 ViewHolder, 继续优化。代码: FruitAdapter ArrayAdapterFruit @Override getView position,ViewGroup parent Fruit fruit getItemposition view ViewHolder viewHolder convertView view LayoutInflater.getContext.resourceId, viewHolder ViewHolder viewHolder. ImageView view.R.. viewHolder. TextView view.R.. view.viewHolder view convertView viewHolder ViewHolder view. 获取ViewHolder viewHolder..fruit. viewHolder..fruit. view ViewHolder ImageView fruitImage TextView fruitName 新增了一个内部类ViewHolder,用于对控件的实例进行缓存。 调用的 setTag方法,将ViewHolder对象存储在 中。 当convertView不为空的时候,则调用Veiw的 getTag方法,把ViewHolder重新取出。