Android ListView等getView调用多次问题
2016-07-26 18:24
330 查看
解决办法1,设置ListView高度为固定值或者match_parent/ifll_parent
2, @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Log.d("onMeasure", "onMeasure");
isOnMeasure = true;
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
Log.d("onLayout", "onLayout");
isOnMeasure = false;
super.onLayout(changed, l, t, r, b);
}
究其原因,无非是listview要动态计算有多少个view显示在里面,所以需要多次onMeasure,最后才onLayout,而onMeasure可能需要执行多次
这不就行了,我们在adapt里面的getview中,判断是否在onmeasure里,如果在,那么仅仅mInflater.inflate(R.layout.XXX),然后立刻返回这个convertView
如果不在onmeasure里,那么再去真正的onlayout
结合这种方法,成功解决了卡顿问题..
2, @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Log.d("onMeasure", "onMeasure");
isOnMeasure = true;
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
Log.d("onLayout", "onLayout");
isOnMeasure = false;
super.onLayout(changed, l, t, r, b);
}
究其原因,无非是listview要动态计算有多少个view显示在里面,所以需要多次onMeasure,最后才onLayout,而onMeasure可能需要执行多次
这不就行了,我们在adapt里面的getview中,判断是否在onmeasure里,如果在,那么仅仅mInflater.inflate(R.layout.XXX),然后立刻返回这个convertView
如果不在onmeasure里,那么再去真正的onlayout
结合这种方法,成功解决了卡顿问题..
相关文章推荐
- Android数据之Json解析
- android_studio上传svn的时候那些不提交
- Android RecyclerView+item动画+下拉刷新,上拉加载更多,侧滑删除(易用可定制)
- BottomSheet的用法
- Android NDK Samples
- 安装android
- tools:replace="android:icon" 的作用和替代方法
- RecyclerView添加Header的正确方式
- Android中ViewFlipper的使用详解
- android Activity的四种启动模式详讲 singleTop standard singleTask singleInstance
- >Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- Android滑动效果是如何产生的
- Android多线程断点续传实现总结
- 从源码一次彻底理解Android的消息机制
- 安卓学习笔记---android RecyclerView首字母悬浮在顶部,滑动删除
- Android大图片裁剪解决方案
- android的多次点击事件
- Android中样式styles和theme主题的使用方式
- Android for arm上的so注入(inject)和挂钩(hook)
- 读懂 Android 中的代码混淆