,,android 之listview 优化方法

,,android 之listview 优化方法

本文主要介绍android平台listview的优化方法。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。

这个东西是安卓必备的,我相信你也会,但是写下来的目的是为了记录。

这个东西很多面试都会被问到,那我们该怎么回答呢?

首先,我认为有以下几点:

1.定义listview的时候最好固定宽度和高度,这样可以减少listview的测量次数,避免每次加载的时候都要进行测量。

2.分页加载,也是优化之一,优化内存,有体验感。有兴趣可以试试大数据加载;

3.convertView是布局的复用;

4.使用ViewHolder的目的是减少findviewByID的数量;

下面的代码验证3和4。

公共视图getView(int position,View convertView,ViewGroup parent) {

Log.e('========',' getView - position '位置);

convert view=layoutinflater . from(m context)。inflate(R.layout.item_list,null);

返回convertView

}

也就是说,你这样写的话,每次都会填写版面(滑动一下就会发现每次都会打印日志),找到对应的版面。如果每次都填,肯定会浪费资源,所以我们这样写。

公共视图getView(int position,View convertView,ViewGroup parent) {

if (convertView==null) {

convert view=layoutinflater . from(m context)。inflate(R.layout.item_list,null);

Log.e('========',' getView - position '位置);

}否则{

}

返回convertView

}

你会看到日志永远是这些数据(如果你的页面显示的是5,这里的数据应该是6,会比显示的数据多1)。

取景器

如果不使用viewHolder,这是代码。

公共视图getView(int position,View convertView,ViewGroup parent) {

if (convertView==null) {

convert view=layoutinflater . from(m context)。inflate(R.layout.item_list,null);

}

TextView TextView=convert view . findviewbyid(r . id . TV);

textview . settext(marray list . get(position));

返回convertView

}

显然,这段代码必须是findViewById每个textview你可能会说,你可以在if判断中找到值,然后在if之外赋值。你可以尝试一些你会觉得有趣的事情。上下滑动几次,你会发现数据会比较混乱,会有很多重复的数据。这显然不符合我们的要求;

公共视图getView(int position,View convertView,ViewGroup parent) {

ViewHolder viewHolder

if (convertView==null) {

convert view=layoutinflater . from(m context)。inflate(R.layout.item_list,null);

view holder=new view holder();

view holder . mtextview=convert view . findviewbyid(r . id . TV);

convert view . settag(view holder);

}否则{

view holder=(view holder)convert view . gettag();

}

view holder . mtextview . settext(marray list . get(position));

返回convertView

}

公共静态类视图容器{

私有TextView mTextView

}

这基本符合我们的要求,数据不会混乱,布局会重用,findViewById次数会减少,从而大大减少内存的使用。其实这样就有问题了。如果listview项中有图片快速滑动,就会发现错位问题。当然,这些问题一般都可以通过第三方加载框架来解决。Listview item最小化了布局的嵌套,很容易加载大图片。Listview优化就是这样。如果有其他更好的优化方法,请留言。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: