android 之如何优化 ListView

标签: android 优化 listview | 发表时间:2014-12-09 18:13 | 作者:u011546655
出处:http://blog.csdn.net


众所周知,在开发过程中,ListView的优化是比较重要的

那么,如何去优化呢?


ListView的提升效率,其实就是在于adapter中getView方法的优化,那么如何使的getView优化呢?


1、在getView() 中重用了convertView,很大程度上的减少了内存的消耗。通过判断convertView是否为null,

     是的话就需要产生一个视图出来,然后给这个视图数据,最后将这个视图返回给底层,呈献给用户。 

     

比如:listview 屏幕显示10条数据,当用户滑动listview的时候,第11条数据出现的时候,第一条数据

就会被android本身提供的  Recycler,将这条item(View)放进RecycleBin(回收站)中,然后显示新视

图的时候,从RecycleBin中重复用这个View。就不会造成每次都要去创建新的View,而节约了大量的资源。


2、自身写一个ViewHold 类,这个ViewHolder,用来标识view中一些控件,方便进行一些事件相应操作的设置,

这样就不用每次getView() 的View只要找一次控件就好了,不用每次都去寻找


代码表示如下:

// getView 方法的优化

public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(
R.layout.activity_list_item, null);
ViewHolder viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
}
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
viewHolder.fillView(getItem(position));
return convertView;
}

     

//  这个类是View的显示,也就是Listview的每条显示的东西

class ViewHolder {
private ImageView iv_NewsImage;
private TextView tv_NewsTitle;
private TextView tv_NewsDate;


public ViewHolder(View convertView) {
iv_NewsImage = (ImageView) convertView.findViewById(R.id.newImage);
tv_NewsTitle = (TextView) convertView.findViewById(R.id.newTitle);
tv_NewsDate = (TextView) convertView.findViewById(R.id.newDate);
}


public void fillView(Object item) {
final NewsInfo news = (NewsInfo) item;
tv_NewsTitle.setText(news.getNewTitle());
tv_NewsDate.setText(getDate(news.getNewDate()));
ImageLoader.getInstance().displayImage(news.getNewImageUrl(),
iv_NewsImage);
}


private String getDate(long time) {
Date date = new Date(time);
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd  HH:mm:ss");
return formatter.format(date);
}
}


作者:u011546655 发表于2014-12-9 18:13:05 原文链接
阅读:19 评论:0 查看评论

相关 [android 优化 listview] 推荐:

android 之如何优化 ListView

- - CSDN博客推荐文章
众所周知,在开发过程中,ListView的优化是比较重要的. ListView的提升效率,其实就是在于adapter中getView方法的优化,那么如何使的getView优化呢. 1、在getView() 中重用了convertView,很大程度上的减少了内存的消耗. 通过判断convertView是否为null,.

Android下拉刷新ListView——RTPullListView

- - CSDN博客推荐文章
下拉刷新在越来越多的App中使用,已经形成一种默认的用户习惯,遇到列表显示的内容时,用户已经开始习惯性的拉拉. 之前在我的文章《 IOS学习笔记34—EGOTableViewPullRefresh实现下拉刷新》中介绍过如何在IOS上实现下拉刷新的功能. 今天主要介绍下在Android上实现下拉刷新的Demo,下拉控件参考自Github上开源项目 PullToRefresh,并做简单修改.

ListView优化之内存优化

- - ITeye博客
• ListView视图缓存优化. • ListView异步加载优化. • ListView图片缓存. • 方法1 :  等比例缩小图片. 方法2 :  对图片采用软引用,及时地进行recyle ()操作. • 方法3 : 在页面切换时尽可能少地重复使用一些代码,比如.     :重复调用数据库,反复使用某些对象等等.

Android杂谈--ListView之BaseAdapter的使用

- - 博客园_首页
      前言      . 话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView、GridView、Gallery、Spinner等等. 它是直接继承自接口类Adapter的,使用BaseAdapter时需要重写很多方法,其中最重要的当属getView,因为这会涉及到ListView优化等问题,其他的方法可以参考链接的文章.

android ListView根据字母排序和定位

- - ITeye博客
基本上很多应用都是用了这个功能当数据多时方便快速查看浏览定位查询等,本案例功能比较简单,需要跟完善的话就要继续优化. 第一步:首相自定义SideBar类继承View类,用于绘制A-Z文字控件,如下:. 第三步:创建MyAdapter继承BaseAdapter并实现SectionIndexer接口注意这里一定要实现这个接口以便实现对应a-z的选择定位功能:.

优化listview的加载速度getview写法

- - Web前端 - ITeye博客
在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来减少对象的创建. 最快的方式是定义一个ViewHolder,将convetView的tag设置为ViewHolder,不为空时重新使用即可 static class ViewHolder { TextView text; ImageView icon; }.

Android优化

- - ImportNew
更多网络优化,可参考:  Android网络. http头信息带Cache-Control域 确定缓存过期时间 防止重复请求. 直接用IP直连,不用域名,策略性跟新本地IP列表. – DNS解析过程耗时在百毫秒左右,并且还有可能存在DNS劫持. 图片、JS、CSS等静态资源,采用CDN(当然如果是使用7牛之类的服务就已经给你搭建布置好了).

android 内存优化

- - CSDN博客推荐文章
      内存泄漏引发很多问题:.      1:程序卡顿,响应速度慢(内存占用高时JVM 虚拟机会频繁出发GC).      2:莫名其妙消失. ANDROID 内存面临的问题.   1: 有限的堆内存,原始只有16M.   2:内存大小消耗等根据设备,操作系统等级,尺寸的不同而不同.   4:支持后台多任务处理.

Android 性能优化

- - CSDN博客综合推荐文章
如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来. 当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能. 我们可以使用IntentService,当后台任务执行结束后会自动停止,避免了Service的内存泄漏.

Android性能优化典范

- - 移动开发 - ITeye博客
2015新年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App. 课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议. 主要从三个方面展开,Android的渲染机制,内存与GC,电量优化.