当前位置: 首页 > news >正文

[转]android listview 连续调用 getview问题分析及解决。

以下文字,全是个人一个一个打出来的。而且不是作家。在表述上及文采上可能不是太好。请谅解。

当我们在使用listview的时候。有时候自定义adapter的时候,是不是会发现在getview里打印日志的时候,重复调用很多次?有时候4次。有的严重甚至到10次,当我们在listview中移动的时候。每移动一列都会调用很多次,这样大大影响到效率!其实这和listview本身在android上的机制有关。下面我开始来介绍一下吧:

      在布局,我们只有一个listview的时候。那好。我们把高设置成wrap_content的时候。在listview里加载几行看看。日志在getview里打印一下。是不是重复调用了?那这个办法就好弄了。把高设置成fill_parent就成了。这个时候发现日志还是重复调用?那就要看一下Listview的上一级而已的高是不是也是设置也fill_parent的,如果不是。请改动吧。如果是。。。那我还真没碰到重复调用的!因为测试好几次了!

     如果我们在而已里不只一个Listview。一个复杂好看的布局可能有很多。listview在布局的某个地方。这个时候有时候运气不好。你会发现你调用了很多次getview。我测试的时候。最高230次。。。可想而知。这个速度是相当慢。而且每移动一次就是调用这么多次!对于这样的情况,在修改布局的时候,要考虑以下两点:1.首先考虑需求布局和性能哪个更重要一点。2.考虑listview周边哪个布局控件影响到了它!

     如果在性能上没有太大影响,而需求要求必需是那样的布局。那就以布局为主。看看有没有别的方法来优化一下listview,当然前提是布局一点都不能调整。如果能调整,布局没有太大变动。而listview又能很好的优化。那就当然优化了!当我们优化的时候。首先要看一下有没有影响到Listview重绘的控件,比如。如果它上面和下面都有控件。而且高都是wrap_content,那么你就要设置成fill_parent或者固定高。这样listview在高上就不会重绘,这是最主要的一点。那左右是不是也有控件(一般一个手机页面用到list的时候不会有这么多控件)?有,那我们就也要调整,那就同高一样的设置。一定要让listview是一个固定在那个地方不动的。不然,你就等着让他重复去调用吧!

     其实说了这么多。最主要的还是在我们进行布局的时候。要巧妙的运用每个控件的属性,以及了解控件每个的原理。这样在我们进行UI设计的时候,才能很好的去结合!

终于说的差不多了。以后会坚持来写自己的经验以及别人的经验分享给大家!吃饭。。。。

吃饭前说一句。这是原创。用之前得说明出处。不然。。。你懂的!

 

总结起来:listview的宽高以及item的还有listview上一级的都要使用fill

from:http://blog.csdn.net/f8376904110/archive/2011/06/02/6460934.aspx

 

相关文章:

  • android自动弹出软键盘
  • 使用Android自带的图标
  • 斯坦福iphone视频教程 – 中英字幕
  • Android中文文档——工具屋
  • Android 避免bitmap内存限制
  • 圆角背景的ListView
  • LayerDrawable层叠样式layer-list
  • android的edittext默认不获得焦点
  • Android中AsyncTask的用法实例
  • Eclipse中如何更改字体及字体大小
  • Android通过http协议POST传输方式
  • Android四种Activity的加载模式
  • 谷歌Android UI设计技巧:优秀UI设计准则
  • android UI优化
  • ListView性能优化之视图缓存
  • angular2开源库收集
  •  D - 粉碎叛乱F - 其他起义
  • eclipse的离线汉化
  • ES6--对象的扩展
  • JavaScript对象详解
  • Java知识点总结(JavaIO-打印流)
  • JS函数式编程 数组部分风格 ES6版
  • Mac转Windows的拯救指南
  • Map集合、散列表、红黑树介绍
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Vue 2.3、2.4 知识点小结
  • Webpack 4 学习01(基础配置)
  • zookeeper系列(七)实战分布式命名服务
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 搞机器学习要哪些技能
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 通过git安装npm私有模块
  • 网页视频流m3u8/ts视频下载
  • 原生 js 实现移动端 Touch 滑动反弹
  • 正则表达式
  • 湖北分布式智能数据采集方法有哪些?
  • 选择阿里云数据库HBase版十大理由
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (接口封装)
  • (实战篇)如何缓存数据
  • .apk文件,IIS不支持下载解决
  • .NET BackgroundWorker
  • .net core 6 redis操作类
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @Data注解的作用
  • @JSONField或@JsonProperty注解使用
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BetterExplained]书写是为了更好的思考(转载)
  • [C++]18:set和map的使用
  • [C++]四种方式求解最大子序列求和问题
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理