常见面试题之ListView的复用及如何优化

ListView的复用及如何优化

经常有人问我,作为刚毕业的要去面试,关于安卓开发的问题,技术面试官会经常问哪些问题呢?我想来想去不能一股脑的全写出来,我准备把这些问题单独拿出来写,并详细的分析一下,这样对于初学者是最有帮助的。这次的第一个问题就是:ListView的复用及如何优化! 1、ListView的复用简单来说就是使用ViewHolder复用convertView。说完大家尤其是初学者,没看过源码的同学不太明白。那我就举一个例子,让大家能够明明白白。 例子如下:

public View getView(int position, View convertView, ViewGroup parent) {
         ViewHolder holder = null;
         if (convertView == null) {
             convertView = mInflater.inflate(R.layout.lv_item, null);
             holder = new ViewHolder();
             holder.textView = (TextView)convertView.findViewById(R.id.tv_text);
             convertView.setTag(holder);
         } else {
             holder = (ViewHolder)convertView.getTag();
         }
         holder.textView.setText(mData.get(position));
         return convertView;
     }
}
 
 public class ViewHolder {
     public TextView textView;
 }

2、如何进行优化呢? ①、如果item中有图片一定要用异步加载。而且里面的图片尽量要用缩略图或者小图。 ②、判断手势,快速滑动时不加载里面的图片。 ③、要对数据进行分页加载。 ④、item的布局层级要越少越好。 3、如何检查呢? 可以使用hierarchview工具查看其优化。 什么是hierarchview?为什么要用它呢? 不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyViewer是我们优化程序的工具之一,它是Android自带的非常有用的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器。 怎么用它呢? Hierarchy Viewer是随Android SDK发布的工具,位于Android SDK/tools/hierarchyviewer.bat (Windows操作系统,mac上显示的为hierarchyviewer),使用起来也是超级简单,通过此工具可以详细的理解当前界面的控件布局以及某个控件的属性(name、id、height等)。 1)连接设备真机或者模拟器。 2)启动你要观察的应用。 3)打开Hierarchyviewer,点击hierarchyviewer文件即可。 说到这里,我相信大家应该会对ListView的复用及优化有了一定的了解,如果在面试的过程中说出来,相信面试官应该会对你满意的!

本文分享自微信公众号 - 非著名程序员(non-famous-coder)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-07-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

可拖拽gridview

在Android开发中,我们常常用到ListView和GridView,而有的时候系统的ListView,GridView并不能满足我们的需求,所以我们需要自己...

35950
来自专栏向治洪

android开关按钮

刚开始接触开关样式的按钮是在IOS系统上面,它的切换以及滑动十分帅气,深入人心。 所谓的开关按钮,就是只有2个状态:on和off,下图就是系统IOS 7上开关按...

36580
来自专栏腾讯大数据的专栏

Android系统6.0举步维艰,占有率不到1%

移动互联网数据报告 本报告基于腾讯云分析(MTA)的用户数据,针对移动操作系统版本分布、各类机型的占有率排名、移动设备屏幕分辨率等分布进行了统计分析。 “ i...

30380
来自专栏向治洪

仿今日头条滑动评论效果

开发中碰到问题之后实现的,觉得可能有的开发者用的到或则希望独立成一个小功能DEMO,所以就放出来这么一个DEMO。 原本觉得是最后完成后发网站客户端的,可是这样...

28650
来自专栏向治洪

Android-Universal-Image-Loader图片异步加载并缓存

 这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。        可是有的人...

34260
来自专栏微信终端开发团队的专栏

XCode基本使用及调试技巧

对于初学iOS开发的同学,了解了Objective-C的基本使用后,最关心的应该是如何把OC程序运行起来。由于Xcode的基本使用比较简单,所以本文着重介绍一些...

81270
来自专栏微信终端开发团队的专栏

Android微信上的SVG

资源矢量化 “清晰”和“体积”的矛盾与麻烦 面对android的各种dpi某事,想要所有设备上的图片都能有最清晰的效果,就意味着每种dpi模式都必须提供一份对应...

51250
来自专栏微信终端开发团队的专栏

Android微信智能心跳方案

前言: 在13年11月中旬时,因为基础组件组人手紧张,Leo安排我和春哥去广州轮岗支援。刚到广州的时候,Ray让我和春哥对Line和WhatsApp的心跳机制进...

1.5K100
来自专栏向治洪

仿今日头条顶部导航效果

 之前发现很多人在群里面、论坛上求网易新闻客户端的源码,之后我就去下了个网易新闻客户端和今日头条新闻客户端,发现他们的大体是一样的,于是在最近的空闲时间,便去琢...

1.2K80
来自专栏QQ会员技术团队的专栏

Android新一代多渠道打包神器

关于作者: 李涛,腾讯Android工程师,14年加入腾讯SNG增值产品部,期间主要负责手Q动漫、企鹅电竞等项目的功能开发和技术优化。业务时间喜欢折腾新技术,写...

34690

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励