微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

优化ListView,提升运行效率

<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.timageResourcefruit.timageID         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.timage ImageView view.R..             viewHolder. TextView view.R..             view.viewHolder                                             view convertView                 viewHolder ViewHolder view.     获取ViewHolder                             viewHolder.timage.timageResourcefruit.         viewHolder..fruit.           view                         ViewHolder                 ImageView fruitimage             TextView fruitName           新增了一个内部类ViewHolder,用于对控件的实例进行缓存。 调用的 setTag方法,将ViewHolder对象存储在 中。 当convertView不为空的时候,则调用Veiw的 getTag方法,把ViewHolder重新取出。  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐