首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android: RecyclerView ` `getChildAt()`即使对象在屏幕上也会返回null

Android中的RecyclerView是一种高级的列表视图控件,用于展示大量数据集合。它是ListView的升级版,提供了更高的灵活性和性能优化。

getChildAt()是RecyclerView的一个方法,用于获取指定位置的子视图。然而,即使子视图在屏幕上可见,有时候调用getChildAt()方法仍然会返回null。这是因为RecyclerView使用了视图回收和复用的机制,只有在屏幕上可见的子视图才会被保留在内存中,其他的子视图会被回收以节省资源。

当调用getChildAt()方法时,如果指定位置的子视图不在屏幕上可见,即使它在数据集中存在,也会返回null。这是正常的行为,因为RecyclerView只会保留屏幕上可见的子视图。

为了解决这个问题,可以使用RecyclerView的findViewHolderForAdapterPosition()方法来获取指定位置的ViewHolder对象,然后通过ViewHolder对象获取子视图。这样可以确保获取到正确的子视图,即使它不在屏幕上可见。

推荐的腾讯云相关产品:腾讯云移动开发平台(https://cloud.tencent.com/product/mpp)

请注意,以上答案仅供参考,具体的实现方式可能因应用场景和需求而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

RecyclerView 实现gallery画廊效果

对ViewHolder也进行了一定的封装,但是如果你仔细观察,你会发出一个疑问,ListView里面有个getView返回View为Item的布局,那么这个Item的样子在哪控制?...还有一点,ListView中convertView是复用的,在RecyclerView中,是把ViewHolder作为缓存的单位了,然后convertView作为ViewHolder的成员变量保持在ViewHolder...和我之前那个例子的效果是一模一样的,不过,我还想做一些改变,我觉得Gallery或者说相册的指示器,下面可能1000来张图片,我不仅喜欢手指在屏幕上滑动时,图片会自动切换。...我还希望,如果我给指示器一个加速度,即使手指离开,下面还在滑动,上面也会联动 。...可以看到不仅支持手机在上面移动时的变化,如果我给了一个加速度,下面持续滚动,上面也会持续变化~~大赞~每张图片回调一次,效率也相当不错。

2.9K50
  • Android 中为RecyclerView控件添加分隔线

    在上一篇 RecyclerView 控件的文章中,我们看了一下ListView控件和RecyclerView控件的简单用法,那么下面我们将关注点放在RecyclerView上,毕竟RecyclerView...="match_parent" > android.support.v7.widget.RecyclerView> 可以看到,我们在布局文件中只加入了一个RecyclerView...recyclerView = null; private MyRecyclerViewAdapter myRecyclerViewAdapter = null; @Override...对象上绘制区域 child = parent.getChildAt(i); } // 如果是水平排布,那么分割线为竖线...好了,RecyclerView控件的分隔线就介绍的差不多了,RecyclerView控件相当于ListView控件的升级版,使用步骤也类似:定义控件、使用适配器添加数据、添加布局管理器、添加分隔线、添加动画效果等等

    2.1K10

    一次使用Kotlin实现酷炫多选操作的尝试

    一个具有两个页面的ViewPager,每个页面包含一个RecyclerView。未被选择的item在左边的列表。选中的item在右边的列表。...这个过程中最技巧性的部分是把view从layout manager移除;否则layout manager 会尝试回收它,因为已经从RecyclerView删除了这个view,所以这会导致错误: sourceRecycler.layoutManager.removeViewAt...一样的意思只是如果对象是null而被调用的话不会抛出NullPointerException,而是返回null: var targetView: View?...itemView 上面的代码中,即使findViewHolderForAdapterPosition返回null也不会崩溃。...也可以到Dribbble上查看我们的概念设计: GitHub ---- 原文:Our Experiment Building a Multiselection Solution for Android

    1.2K20

    Android开发之漫漫长途 XV——RecyclerView

    该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!...:listDivider,该属性是一个Drawable对象。...相比于ListView,RecyclerView的回收机制更为完善 Recycler是RecyclerView回收机制的实现类,他实现了四级缓存: mAttachedScrap: 缓存在屏幕上的ViewHolder...private void dispatchLayoutStep2() { ...... // 设置状态 mState.mInPreLayout = false; // 更改此状态,确保不是会执行上一布局操作...Layout,在ListView中通过把屏幕的子View detach并加入mActivieViews,以避免重复添加item并可通过attach提高性能,那么在RecyclerView中,它的做法与ListView

    2.3K20

    Android-UI布局---RecyclerView学习(二)利用它做的相册集效果

    这个代码在网上有, 横向ListView的功能,参考Android 自定义RecyclerView 实现真正的Gallery效果 首先说布局文件: RecyclerView视图中的item的布局: 这个布局下面是高度120dp 宽度填充父窗体,然后整个手机屏幕多余的空间都给了上面的imageview 视图 接下来是就是视图的自定义...= null) { if (newView != null && newView !...而RecyclerView基本需要上面一系列的步骤,那么为什么会添加这么多的步骤呢?...那么就必须解释下RecyclerView的这个名字了,从它类名上看,RecyclerView代表的意义是,我只管Recycler View,也就是说RecyclerView只管回收与复用View,其他的你可以自己去设置

    1.4K30

    Android开发之漫漫长途 XIV——ListView

    ---- 前言 列表展示控件(ListView或者RecyclerView)是我们在开发过程中经常要使用到的一种控件。而我们学习Android开发的时候,ListView也是必须掌握的。...*ActiveViews是在布局开始时出现在屏幕上的视图。通过构造,它们显示当前信息。 *在布局的最后,ActiveViews中的所有视图都被降级为ScrapViews。...中存储的第一个View的位置. */ private int mFirstActivePosition; /** *在布局开始时在屏幕上的视图。...那么根据fillDown()方法中的while循环,会让子元素View将整个ListView控件填满然后就跳出,也就是说即使我们的Adapter中有一千条数据,ListView也只会加载第一屏的数据,剩下的数据反正目前在屏幕上也看不到...当然有,因为刚才在trackMotionScroll()方法中我们就已经看到了,一旦有任何子View被移出了屏幕,就会将它加入到废弃缓存中,而从obtainView()方法中的逻辑来看,一旦有新的数据需要显示到屏幕上

    93130

    Carson带你学Android:手把手带你深入学习RecylerView

    前言 RecylerView在Android开发中十分常见 今天,我将为大家带来RecylerView的全面介绍,包括其定义、特点、具体使用等,希望你们会喜欢。 目录 1....答:从名字上看RecyclerView,即回收循环视图,也就是说RecyclerView只管回收与复用View,其他的你可以自己去设置,可以看出其高度的解耦,给予你充分的定制自由 2.2 缺点 RecyclerView...构造Adapter对象,设置适配器。 将RecyclerView绑定到Adapter上。 6....在Dependencies里面加入 compile 'com.android.support:recyclerview-v7:23.1.1' 步骤2....构造Adapter对象,设置适配器 将RecyclerView绑定到Adapter上 MainActicity.java package scut.receiverview; import android.os.Bundle

    58320

    RecyclerView使用记录

    RecyclerView使用记录 随着公司自用app客户端功能&需求越来越复杂,某些页面的布局也越来越复杂。在前同事的建议下,使用RecyclerView来实现。...方案 请求服务端登录接口,返回用户信息、角色信息、权限等 APP端根据权限组装数据传到Adapter 渲染视图 实现 在主页布局适合的布局添加以下布局代码 recyclerview.widget.RecyclerView..., R.mipmap.wk_sk)); return; } 这里更好的处理方法是这些data也通过服务端返回,客户端只管处理 调用recyclerView.../获取其在adapter中的位置 int position = params.getViewLayoutPosition(); // 这个方式也可以 int position = recyclerView.getChildAdapterPosition...()).findFirstVisibleItemPosition(); // 这样也可以获取到 View childFirst = recyclerView.getChildAt(0); RecyclerView.LayoutParams

    48710

    Android RecyclerView 使用完全解析 体验艺术般的控件

    而RecyclerView基本需要上面一系列的步骤,那么为什么会添加这么多的步骤呢?...那么就必须解释下RecyclerView的这个名字了,从它类名上看,RecyclerView代表的意义是,我只管Recycler View,也就是说RecyclerView只管回收与复用View,其他的你可以自己去设置...在绘制的时候,去会绘制decorator,即调用该类的onDraw和onDrawOver方法, onDraw方法先于drawChildren onDrawOver在drawChildren之后,一般我们选择复写其中一个即可...不过我们也可以自己去添加,只是会多了些代码而已。...甚至某些特殊屏幕,让其横向滑动~~再选择一个nice的动画效果,相信这种插件式的编码体验一定会让你迅速爱上RecyclerView。

    1.6K10
    领券