ListView,GridView的getView多次调用问题
背景:
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多次调用问题相关推荐
- Android 快速开发系列 打造万能的ListView GridView 适配器
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...
- [Android]ListView的Adapter.getView()方法中延迟加载图片的优化
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4139998.html 举个例子吧,以好友列表为例 ListVi ...
- 一个适用于ListView/GridView/RecyclerView的通用适配器
简化大量重复代码 支持多布局 自定义图片加载 常用数据操作 view复用 RecyclerView item 点击和长按事件 GitHub源码地址 简书地址 gradle依赖 dependencies ...
- android listview gridview 性能优化
有关图片加载的一些记录.这里针对的主要是会有大量的AdapterView需要快速滚动加载图片情况 一些如 异步加载,文件缓存,LruCache内存缓存Bitmap等的常规的通用方式就不在这里说,这些可 ...
- android 高仿苹果listview,高仿 MIUI 弹性拉伸 view ,支持RecyclerView, ListView, GridView, ScrollView ......
首先申明:这个库是基于 Over-Scroll Elasticity 支持 Android 原生控件 RecyclerView, ListView, GridView, ScrollView - 这个 ...
- Flutter 28: 图解 ListView/GridView 混用时滑动冲突小尝试
小菜在学习过程中会在一个 Page 页面同时用到 GridView 和 ListView 或多个 ListView,此时就会遇到常见的滑动冲突问题.小菜尝试了两种解决滑动冲突的方案,仅记录一下基本的使 ...
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法 参考文章: (1)universal image loader在listview/ ...
- android 列表上拉加载更多,Android 下拉刷新,上拉加载更多控件–支持ListView,GridView和ScrollView...
麦洛遇到这样一个需求,实现类似于IOS下拉刷新,上拉加载更多的控件.麦洛google,baidu了一番,网上有不少实现,比较常见的是国外牛人的实现,不过国外的实现基本上都是扩展于ListView,所以 ...
- [补充]上集 Ch. 19-12(AJAX)在ListView / GridView的「样版」里面,放置 UpdatePanel
这是我的文章备份,有空请到我的网站走走, http://www.dotblogs.com.tw/mis2000lab/ 才能掌握我提供的第一手信息,谢谢您. http://www.dotblogs ...
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...
最新文章
- LeetCode简单题之分糖果 II
- [转]cocos2d-js 3.0 屏幕适配方案 分辨率适应
- PhoenixGo战胜绝艺,腾讯包揽AI围棋大赛前两名
- java extjs如何使用_ExtJS初探:在项目中使用ExtJS
- [CLR via C#]5.1 基元类型
- systemctl常用命令
- 【Linux系统编程】进程常用调度算法
- 59、crontab用法简介
- vue3+typescript引入外部文件
- CentOS忘记普通用户密码解决办法
- 第一:Python+Allure运行报错AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
- 【ROS】header.stamp与double转换
- vue 如何打开接口返回的HTML文件
- sharepoint文档库文件下载
- 地理信息系统(GIS)网络架构
- Hung-yi Li Machine Learning 2019 Task1
- LabVIEW编程LabVIEW开发 旧程序升级维护
- OM6621系列国产M4F内核低功耗BLE5.1大内存SoC蓝牙芯片
- 【OpenPCDet】Kitti数据集下训练PointPillars并评估可视化
- 华南理工网络教育计算机平时作业,2017年华南理工大学网络教育计算机应用基础平时作业...
热门文章
- AES-GCM加密算法
- wacom怎么调压感_wacom手绘板_wacom手绘板的钢笔压力怎么设置?
- 错误使用 eig 输入矩阵包含 nan 或 inf_特斯拉AI主管提醒你神经网络的几大常见错误...
- 1.两数之和(leetcode-1)
- MapReduce 1.x VS 2.x架构对比
- 考研 数学一 公式笔记
- Linux内核绑定1号cpu,Linux绑定硬件IRQ到指定CPU核
- clearinterval函数不生效_excel有没有一种技巧或函数让你相见恨晚,如果没有请看这篇文章...
- python逐行调试_python调试:pdb基本用法(转)
- 鸿鹄系统和鸿蒙系统区别,鸿蒙系统现身,搭配升降式镜头和鸿鹄芯片,你以为是手机?...