RecycleView 获取第一个可见条目(掉坑篇)
来源:互联网 发布:诺曼鲍威尔体测数据 编辑:程序博客网 时间:2024/04/29 15:16
问题描述
今天本来心情很愉快的,因为需求是酱样子的,扫了一眼马上用我的核桃仁处理器,迅速定位–>直接就RecycleView嵌套RecycleView呀,简单粗暴我喜欢。
(签到跟签退之间的View,测量每个子item的高度,然后动态赋值给这个View)
然后我就笑不出来了,因为什么呢,开始的item数量少,当数据多了,屏幕显示不完,拉下去之后就Crash了!WTF!
说我这个对象不存在,到底为什么会出现这种情况?百度一下–>RecyclerView有良好的回收机制,所以只加载屏幕显示的View,未显示部分将回收。由于getChildAt()这个方法只能get到屏幕显示的部分,也就是说:假如屏幕上只能显示5个View,当往下滑动到第6、7个View的时候,他们的position虽然还是5,6但是由于getChildAt()只能get到屏幕上显示的View,所以它实际的position其实是4、5。想要get到第6个View不能用getChildAt(6)而要用getChildAt(4)
解决方法
其实这问题之前在ListView中也出现过,不过只需要用当前的position减去屏幕显示的第一个View的position(getFirstVisiblePosition())就行。
RecycleView中没有这个方法,But可以有这个方法
final LinearLayoutManager layoutManager = new LinearLayoutManager(mContext); layoutManager.findFirstVisibleItemPosition()//获取第一个先是的View的索引
使用recycleView中的 position - 显示view的索引即可
以下是我解决问题的办法
@Override public void onBindViewHolder(final ViewHoldX holder, int position) { final int S = position; final LinearLayoutManager layoutManager = new LinearLayoutManager(mContext); holder.recycler_view.setLayoutManager(layoutManager); OneAdapter oneAdapter = new OneAdapter(mContext, mList.get(position).getFruitBeen()); holder.recycler_view.setAdapter(oneAdapter); fruitBeen = mList.get(position).getFruitBeen(); holder.recycler_view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { View childAt = layoutManager.getChildAt(S - layoutManager.findFirstVisibleItemPosition()); if (childAt !=null){ height = childAt.getHeight(); } int x = height * fruitBeen.size(); ViewGroup.LayoutParams params = holder.view1.getLayoutParams(); params.height = x; holder. view1.setLayoutParams(params); } }); }
每天进步一点点
阅读全文
0 0
- RecycleView 获取第一个可见条目(掉坑篇)
- recycleview获取第一个和最后一个可见item的位置
- Recycle获取第一个可见条目(包括瀑布流)位置以及getChildAt(position)
- Android实现一个选择器-recycleview滚动中第一个item位置的获取
- RecycleView加载不同条目
- RecycleView加载不同条目
- RecycleView多条目加载
- RecycleView实现多条目
- recycleview条目点击事件
- RecycleView的多条目
- RecycleView多条目加载
- RecycleView多条目加载
- 使用RecycleView删除条目 以及动画条目
- recycleview条目的背景选择器
- recycleView的条目长按换位置
- RecycleView 的多条目布局
- recycleview的多条目加载
- recycleview的多条目展示
- ES6 => 箭头函数
- Maven概述(一)
- 数学建模--插值和拟合实例
- [LeetCode] 567. Permutation in String
- ListIterator和Iterator的区别与联系
- RecycleView 获取第一个可见条目(掉坑篇)
- Head Fiest Python读书笔记
- 图-迪杰斯特拉(dijkstra)算法
- 蚂蚁分类信息系统5.8 短信通道2 互亿无线配置使用说明
- Excel在统计分析中的应用—第六章—概率分布及概率分布图-Part3-离散型概率分布(负二项分布函数NEGBINOM.DIST()的应用)
- java语言的各种输入情况
- RHEL 7.2 下安装Tomcat并设置开机自启
- PMD工具(Ptrace-based Memory Dump)源代码(注释版)
- 问题 : 最简单的计算机