Android NestedScrollView嵌套RecyclerView的问题

本文探讨了在Android中NestedScrollView嵌套RecyclerView时出现的内存问题和滑动同步问题。通过设置RecyclerView固定高度避免一次性加载所有数据,同时通过实现NestedScrollingParent3和NestedScrollingChild3接口来实现滑动通讯。详细介绍了如何重写相关方法来处理滑动事件,确保轮播图在RecyclerView上滑时正确隐藏。
摘要由CSDN通过智能技术生成

问题出现原因

想做到这么一种效果,页面中既有轮播图,又有RecyclerView,当RecyclerView上滑时,轮播图会消失。
在这里插入图片描述
在这里插入图片描述
而这样就会出现一个问题。

具体的问题

打印出log,分别在适配器中的onBindViewHolder和onCreateViewHolder 也打印log。
在这里插入图片描述
这里准备的数据有52条,结果这一下全部加载出来了,这样就造成内存吃紧的情况。
而且我们加载更多数据的时候,也会出现这种情况。
按照我们正常的RecyclerView的使用,我们的onCreateViewHolder 不会有么多次的调用,只会有展示窗口的大小能容纳下的item个数。
onBindViewHolder 是正常的,它会每次给展示的几个item 动态更换内容,从而完成对item的复用。
但是这里每一次都会调用(它的调用就意味着对象的创建)。这就问题蛮大了。
在这里插入图片描述

通过获得Recyclerview的高度,就会发现Recyclerview高度有点长的过分了。
这里的问题就在于NestedScrollView嵌套RecyclerView 会出现这情况。

解决方案

因为NestedScrollView,导致RecyclerView 全部加载出来了。
只需要给我们的RecyclerView 动态的设置一个固定的长度。这样RecyclerView就能根据手机屏幕展示的大小,从而简单的调用几个onCreateViewHolder()。不会想之前那样多次调用了。

具体解决

怎么解决已经有了思路,就获得屏幕长度即可,这里说的屏幕长度,是指的完全展示RecyclerView所需的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值