这次是关于Listview的优化的,之前一直采用愚蠢的方式来使用listview,出现的情况就是数据多的话下拉的时候会出现卡顿的情况,内存占用多。所以学习了关于listview的优化,并且这也是普遍使用的方法。我们一般来说创建listview的话更常用的是继承BaseAdapter的方式进行实现,因为这样可以自定义list没一个item的布局,根据程序的需求进行定制,一般来说listview所展示的数据都是比较多的,一般也有比较少的。所以,不对adapter进行优化的话,那么每一次拖动listview都需要生成一次布局,这样的话,程序就可能会有卡顿的情况,并且这样的方式占用内存也比较多。主要是 getView(final int position, View convertView, ViewGroup parent){}的区别

  下面这种方式不推荐使用:

public View getView(final int position, View convertView, ViewGroup parent) {
convertView= inflater.inflate(R.layout.activity_layout, null);
TextView testName = (TextView) convertView
.findViewById(R.id.testName_textview);
TextView CassetteType = (TextView) convertView
.findViewById(R.id.CassetteType_textview);
TextView testTimeYear_textview = (TextView) convertView
.findViewById(R.id.testTimeYear_textview);
testName.setText("Hello");
CassetteType.setText("Android");
testTimeYear_textview.setText("Word");
return view;
}

  比较简单的例子,上面的方式不推荐使用,因为每一次加载item的时候都需要重新加载每一个控件,使得程序占用内存大,还可能会卡卡的感觉。

  推荐下面的方式使用:

public View getView(final int position, View convertView,ViewGroup parent) {
ViewHolder viewHolder = null;
if (null == convertView) {
viewHolder = new ViewHolder();
LayoutInflater mInflater = LayoutInflater.from(mContext);
convertView = mInflater.inflate(R.layout.data_management, null);
viewHolder.CassetteType = (TextView) convertView
.findViewById(R.id.CassetteType_textview);
viewHolder.testTimeYear_textview = (TextView) convertView
.findViewById(R.id.testTimeYear_textview);
viewHolder.testTime = (TextView) convertView
.findViewById(R.id.testTime_textview);
    convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
testName.setText("Hello");
CassetteType.setText("Android");
testTimeYear_textview.setText("Word");
return convertView;
}
private static class ViewHolder {
TextView CassetteType;
TextView testTimeYear_textview;
TextView testTime; }

  这种方法的特点便是通过类ViewHolder,进行TextView的定义,Adapter每一次创建一个item的时候先判断convertView是否为空,为空的话就进行findViewById,其中最重要的是这个convertView.setTag(viewHolder);,convertView不为空的话就执行这句viewHolder = (ViewHolder) convertView.getTag();,然后每一个item就不需要重复性的去findViewById布局的每一个view了,这样就能优化listview的加载速度和减少内存使用,原理大概便是这样,可能也没有讲明,没能理解的话,建议搜搜listview优化。

Adaptert Listview 优化的更多相关文章

  1. listview优化 汇总

    1,listview加载性能优化ViewHolder 转自: http://blog.csdn.net/jacman/article/details/7087995 在android开发中Listvi ...

  2. Android 常驻与很驻型广播的差别,及ListView优化,Android新手基本知识巩固

    1.常驻型广播  常驻型广播,当你的应用程序关闭了,假设有广播信息来,你写的广播接收器相同的能接受到.  他的注冊方式就是在你的应用程序中的AndroidManifast.xml进行注冊. 通常说这样 ...

  3. 内存泄露--contentView缓存使用与ListView优化

    引起Android内存泄露有很多种原因,下面罗列了一些问题,以后会一一解决 1.构造Adapter时没有使用缓存convertView(衍生出ListView优化问题) 2.查询数据库游标没有关闭 3 ...

  4. Android——ListView优化

    1.ListView基本概念 列表显示需要三个元素: ListView:用来展示列表的View. 适配器:用来把数据映射到ListView上 数据:具体的将被映射的字符串,图片或基本组件 适配器类型分 ...

  5. Android零基础入门第43节:ListView优化和列表首尾使用

    原文:Android零基础入门第43节:ListView优化和列表首尾使用 前面连续几期都在学习ListView的各种使用方法,如果细心的同学可能会发现其运行效率是有待提高的,那么本期就来一起学习有哪 ...

  6. Android开发之ListView详解 以及简单的listView优化

    ListView列表视图 最常用的控件之一,使用场景例如:微信,手机QQ等等. android:divider:每个item之间的分割线,可以使用图片或者色值. android:dividerHeig ...

  7. listview优化技术

    1.在adapter中的getView方法中尽量少使用逻辑 2.尽最大可能避免GC 3.滑动的时候不加载图片 4.将ListView的scrollingCache和animateCache设置为fal ...

  8. ListView优化中ViewHolder要不要定义为static静态内部类?

    给学生讲课的时候,发现存在这个问题,下来百度了下,发现很纠结,涉及到了内部类对外部类的引用,静态类的生命周期等java知识,现总结如下: static class ViewHolder { //定义l ...

  9. Android性能优化--Listview优化

    ListView的工作原理 首先来了解一下ListView的工作原理(可参见http://mobile.51cto.com/abased-410889.htm),如图: ListView 针对每个it ...

随机推荐

  1. iOS开发技术 - 二维码扫描、生成

    QRecLevel:QR_ECLEVEL_H // 二维码容错率,最高为30%(即QR_ECLEVEL_H),即LOGO有大                                       ...

  2. CSRF和XSS区别和预防

    名词解释 CSRF(Cross-site request forgery)跨站请求伪造 XSS (Cross-site scripting)跨站脚本攻击,这里缩写css被前端层叠样式表(Cascadi ...

  3. 题解 CF1304E 【1-Trees and Queries】

    前言 这场比赛,在最后 \(5\) 分钟,我想到了这道题的 \(Idea\),但是,没有打完,比赛就结束了. 正文 题目意思 这道题目的意思就是说,一棵树上每次给 \(x\) 和 \(y\) 节点连 ...

  4. React Hook上车

    React Hook 是 v16.8 的新功能,自诞生以来,受到广泛的好评,在 React 版本更新中具有里程碑的意义.现在都2020年了,再不上车 React Hook 就真的 out 了... H ...

  5. 单调栈-Maximum Width Ramp

    2020-01-23 19:39:26 问题描述: 问题求解: public int maxWidthRamp(int[] A) { Stack<Integer> stack = new ...

  6. office2010安装与破解,笔者亲测可用!!!!!!

    我们首先需要准备office2010安装包与破相应的破解软件.软件包的获取方式:扫码关注[猿成长],,回复 office2010安装,即可获取,下载解压后文件目录结构如下图所示: 打开安装程序文件夹, ...

  7. 双连通分量 Road Construction POJ - 3352

    @[双连通分量] 题意: 有一个 n 个点 m 条边的无向图,问至少添加几条边,能让该图任意缺少一条边后还能相互连通. 双连通分量定义: 在无向连通图中,如果删除该图的任何一个结点都不能改变该图的连通 ...

  8. 在操作Git Bash时出现的问题

    参考博客:https://blog.csdn.net/weixin_44394753/article/details/91410463 1.问题1 $ git remote add origin gi ...

  9. gitlab问题

    1.gitclone前http://10.10.11.4:9999/SZRDC/I`````````.git改为http://git.berchina.com:9999/~~~~``` 2.Cloni ...

  10. jmeter术语

    1.负载:模拟业务请求操作对服务器造成压力的过程 2.性能测试(performance testing):模拟用户负载来测试系统在负载情况下,系统的响应时间.吞吐量等指标是否满足性能要求 3.负载测试 ...