背景:
listview,gridview使用,有时候getview会调用多次,特别是把listview放在viewpager中,很容易卡顿。
1、首先,能尽量把listview和gridview的item设置为固定高度或者match_parent,这样可以减少measure的次数,则会减少调用getview的次数
2、当listview,gridview的item比较复杂的时候,则测量的次数增多,getview便会调用多次。无非是listview要动态计算有多少个view显示在里面,所以需要多次onMeasure,最后才onLayout,而onMeasure可能需要执行多次
解决:
我们在adapter里面的getview方法中,判断是否在onmeasure里,如果在,那么仅仅mInflater.inflate(R.layout.XXX),然后立刻返回这个convertView,如果不在onmeasure里,那么再去真正的onlayout
综合使用,效果更好
代码:
1、item设置为固定高度或者match_parent就不写了
2、

public class MyListView extends ListView {public boolean isOnMeasure = false;public MyListView(Context context) {super(context);}public MyListView(Context context, AttributeSet attrs) {super(context, attrs);}public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);isOnMeasure = true;super.onMeasure(widthMeasureSpec, expandSpec);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {isOnMeasure = false;super.onLayout(changed, l, t, r, b);}
}

getview方法中

 @Overridepublic View getView(int location, View contentView, ViewGroup arg2) {ISimpleViewHolder holder = null;if (contentView == null) {contentView = LayoutInflater.from(mContext).inflate(getViewStyle(),null);holder = getViewHolder(contentView);contentView.setTag(holder);} else {holder = (ISimpleViewHolder) contentView.getTag();}if (arg2 instanceof MyListView) {if (((MyListView) arg2).isOnMeasure) {return contentView;}}updateView(holder, location);return contentView;}

ListView,GridView的getView多次调用问题相关推荐

  1. Android 快速开发系列 打造万能的ListView GridView 适配器

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...

  2. [Android]ListView的Adapter.getView()方法中延迟加载图片的优化

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4139998.html 举个例子吧,以好友列表为例 ListVi ...

  3. 一个适用于ListView/GridView/RecyclerView的通用适配器

    简化大量重复代码 支持多布局 自定义图片加载 常用数据操作 view复用 RecyclerView item 点击和长按事件 GitHub源码地址 简书地址 gradle依赖 dependencies ...

  4. android listview gridview 性能优化

    有关图片加载的一些记录.这里针对的主要是会有大量的AdapterView需要快速滚动加载图片情况 一些如 异步加载,文件缓存,LruCache内存缓存Bitmap等的常规的通用方式就不在这里说,这些可 ...

  5. android 高仿苹果listview,高仿 MIUI 弹性拉伸 view ,支持RecyclerView, ListView, GridView, ScrollView ......

    首先申明:这个库是基于 Over-Scroll Elasticity 支持 Android 原生控件 RecyclerView, ListView, GridView, ScrollView - 这个 ...

  6. Flutter 28: 图解 ListView/GridView 混用时滑动冲突小尝试

    小菜在学习过程中会在一个 Page 页面同时用到 GridView 和 ListView 或多个 ListView,此时就会遇到常见的滑动冲突问题.小菜尝试了两种解决滑动冲突的方案,仅记录一下基本的使 ...

  7. universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法

    universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法 参考文章: (1)universal image loader在listview/ ...

  8. android 列表上拉加载更多,Android 下拉刷新,上拉加载更多控件–支持ListView,GridView和ScrollView...

    麦洛遇到这样一个需求,实现类似于IOS下拉刷新,上拉加载更多的控件.麦洛google,baidu了一番,网上有不少实现,比较常见的是国外牛人的实现,不过国外的实现基本上都是扩展于ListView,所以 ...

  9. [补充]上集 Ch. 19-12(AJAX)在ListView / GridView的「样版」里面,放置 UpdatePanel

    这是我的文章备份,有空请到我的网站走走, http://www.dotblogs.com.tw/mis2000lab/ 才能掌握我提供的第一手信息,谢谢您.   http://www.dotblogs ...

  10. Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...

最新文章

  1. LeetCode简单题之分糖果 II
  2. [转]cocos2d-js 3.0 屏幕适配方案 分辨率适应
  3. PhoenixGo战胜绝艺,腾讯包揽AI围棋大赛前两名
  4. java extjs如何使用_ExtJS初探:在项目中使用ExtJS
  5. [CLR via C#]5.1 基元类型
  6. systemctl常用命令
  7. 【Linux系统编程】进程常用调度算法
  8. 59、crontab用法简介
  9. vue3+typescript引入外部文件
  10. CentOS忘记普通用户密码解决办法
  11. 第一:Python+Allure运行报错AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
  12. 【ROS】header.stamp与double转换
  13. vue 如何打开接口返回的HTML文件
  14. sharepoint文档库文件下载
  15. 地理信息系统(GIS)网络架构
  16. Hung-yi Li Machine Learning 2019 Task1
  17. LabVIEW编程LabVIEW开发 旧程序升级维护
  18. OM6621系列国产M4F内核低功耗BLE5.1大内存SoC蓝牙芯片
  19. 【OpenPCDet】Kitti数据集下训练PointPillars并评估可视化
  20. 华南理工网络教育计算机平时作业,2017年华南理工大学网络教育计算机应用基础平时作业...

热门文章

  1. AES-GCM加密算法
  2. wacom怎么调压感_wacom手绘板_wacom手绘板的钢笔压力怎么设置?
  3. 错误使用 eig 输入矩阵包含 nan 或 inf_特斯拉AI主管提醒你神经网络的几大常见错误...
  4. 1.两数之和(leetcode-1)
  5. MapReduce 1.x VS 2.x架构对比
  6. 考研 数学一 公式笔记
  7. Linux内核绑定1号cpu,Linux绑定硬件IRQ到指定CPU核
  8. clearinterval函数不生效_excel有没有一种技巧或函数让你相见恨晚,如果没有请看这篇文章...
  9. python逐行调试_python调试:pdb基本用法(转)
  10. 鸿鹄系统和鸿蒙系统区别,鸿蒙系统现身,搭配升降式镜头和鸿鹄芯片,你以为是手机?...