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

使用 ConcatAdapter 顺序连接其他 Adapter

ConcatAdapter 是 recyclerview: 1.2.0-alpha 04 中提供的一个新组件,它可以帮我们顺序地组合多个 Adapter,并让它们显示在同一个 RecyclerView...这方面的一个用例,是在列表头部和底部显示加载状态: 当列表从网络中检索数据时,我们想显示一个加载中的图标;如果出现错误,我们要显示错误信息和重试按钮。...要获得完整的实现,请查看这里 拉取请求,它添加了: 从 ViewModel 中暴露出来的 LoadState 显示加载状态的头部和底部的布局 头部和底部的 ViewHolder 对象 一个 ListAdapter...当您复用 ViewHolder 时,确保同一视图类型没有对应不同的 ViewHodler!防止出现这个问题的最佳实践之一,便是将布局 ID 作为视图类型返回。 <!...数据变更通知 当 ConcatAdapter 中的一个 Adapter 调用了通知函数时,ConcatAdapter 会在更新 RecyclerView 之前计算新的项目位置。

81520

使用 ConcatAdapter 顺序连接其他 Adapter

ConcatAdapter 是 recyclerview: 1.2.0-alpha 04 中提供的一个新组件,它可以帮我们顺序地组合多个 Adapter,并让它们显示在同一个 RecyclerView...这方面的一个用例,是在列表头部和底部显示加载状态: 当列表从网络中检索数据时,我们想显示一个加载中的图标;如果出现错误,我们要显示错误信息和重试按钮。 ?...△ 一个带有底部的 RecyclerView,底部显示了加载状态: 加载进度或错误信息 ConcatAdapter 简介 ConcatAdapter 让我们可以顺序显示多个 Adapter 中的内容。...△ RecyclerView 和 Adapter 数据 在头部和底部显示加载状态 我们可以在头部或底部显示一个进度条或错误信息。列表成功加载数据后,头部或底部便不应该再显示任何信息。...要获得完整的实现,请查看这里 拉取请求,它添加了: 从 ViewModel 中暴露出来的 LoadState 显示加载状态的头部和底部的布局 头部和底部的 ViewHolder 对象 一个 ListAdapter

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android Material Design系列之RecyclerView和CardView

    是复用的,在RecyclerView中,是把ViewHolder作为缓存的单位了,然后convertView作为ViewHolder的成员变量保持在ViewHolder中,也就是说,假设手机屏幕可显示10...前面我们介绍RecyclerView时,说过RecyclerView适合多种嵌套的布局效果, ViewHolder更适合多种子布局的列表。...第一步:添加布局状态标识,并增加一项FooterView 在adapter中声明布局状态标识,是普通布局还是foot布局 private static final int TYPE_NORMAL_ITEM...onCreateViewHolder(ViewGroup viewGroup, int viewType) { //如果viewType是普通item返回普通的布局,否则是底部布局并返回...FooterViewHolder vh = new FooterViewHolder(view); return vh; } } 第四步:根据holder类型判断数据 //将数据与界面进行绑定的操作

    2.1K80

    淘宝首页Bug!嵌套滑动及NestedScroll

    通常首页都是一个RecyclerView,然后底部是Tab+frangment(内部recyclerview)组成的瀑布流商品---- 一起作为外部RecyclerView的最后一个item,很多电商都是这样...分别看下淘宝、京东的 外部RecyclerView(整个首页列表)、内部RecyclerView(底部tab中的商品流列表) 嵌套时的滑动效果。 ? 在这里插入图片描述京东 VS 淘宝 ?...所以 按照正常处理滑动冲突的思路处理----当tab没到顶部时,parent拦截事件,tab到顶部时 parent就不拦截事件,但是由于手指没抬起来,所以这一事件序列还是继续给parent,不会到内部RecyclerView...时、开始滑动内部RecyclerView时,都询问NestedScrollLayout2是否处理且如何处理。...recyclerView一直保持在AppBarLayout下方。

    1.5K20

    RecyclerView预加载!

    监听列表滚动状态 第一个想到的方案是监听列表滚动状态,当列表快滚动到底部时执行预加载,RecyclerView.OnScrollListener提供了两个回调: public class RecyclerView...preloadCount) { onPreload() } } } }) } 当列表滚动时...然后就可以像这样实现预加载: recyclerView.addOnPreloadListener(3) {// 当距离列表底部还有 3 个表项时执行预加载 // 预加载业务逻辑 } 一运行 Demo...就测出 bug:当快速滚动列表时onPreload()没有执行,当慢慢滚动列表时onPrelaod()会执行多次。...不要担心用户在列表底部多次上拉导致回调多次预加载,因为这种情况下onBindViewHolder()不会执行多次。当RecyclerView更换LayoutManager时,也不需要修改代码。

    2.4K00

    RecyclerView 居然还能实现吸底效果

    测量RecyclerView内容高度实现 这种方式很直观,我们先获取RecyclerView控件的高度h1,设置完数据后再获取RecyclerView的内容高度h2,然后将h1与h2进行比较: ①如果h1...具体分为如下几个步骤: ①将RecyclerView的父布局修改为RelativeLayouot,在RelativeLayouot的底部、RecyclerView的上方添加一个Footer布局。...: " + recyclerViewRealHeight); }); ④默认情况下悬浮布局不显示,只有h1时,该悬浮布局才显示,核心代码如下: // 根据剩余空间确定是否需要显示吸底的图表底部...我们在onDrawOver中获取到第一个可见子View,然后根据id从里面获取到头部View,接着将这个用canvas将这个View绘制出来即可。 有兴趣的同学可以自行实现。...当某个Item的底部与RecyclerView的底部重叠时,lastView跟lastVisibleView就是同一个了,具体如下图: ?

    3.1K20

    手把手教你打造RecyclerView滚动特效

    思考 基于上述代码,我们基本实现动画的细节,接下来我们需要思考的是,如何将RecyclerView与process结合?...得到了上一步滑动与process的关系,接下来我们来计算一下滑块底部到RecyclerView可见范围顶部的距离。...RecyclerView初始情况 我们可以将RecyclerView初始情况设想如上图,此时turningLine的值为0。当RecyclerView滑动时: ?...按照实现RecyclerView的套路一步步实现最基本的列表效果,然后将动画与滚动监听的关系放入Adapter中。...当RecyclerView滑动太快时,单位滚动距离内,滚动监听事件的触发频率较低,导致有些Item的动画进度未达到100%便从屏幕中消失,从而存在重新滚动到那个Item时,Item的动画停留在1%~99%

    2.7K10

    Android高仿京东2020版首页联动效果!

    通过CoordinatorLayout+RecyclerView实现; 第一版得布局结构图: image.png 起初考虑到TabLayout和RecyclerView(ViewPager中)可以一起滑动...,所以很容易想到的办法就是用Scrollview将两者嵌套进去,效果是实现了,但是Scrollview嵌套Viewpager的弊端显而易见!...),当viewpager的position==0时,MainActivity中的TabLayout隐藏,其它页面时显示,所有的效果操作由MainActivity转移到了Tab1Fragment中,这样也就避免了使用...android:nestedScrollingEnabled="false" /> 另外,本篇在原来的基础上多加了一个功能...红框部分会正好卡在底部,并不会完全隐藏掉,原因其实很简单,如图: image.png 图片到达底部时,由于红框与图片底部是持平的,所以正好漏在了外面,因此,这就需要上面所说的方法,将图片高度在屏幕高度基础上再

    1.1K20

    获取数据并绑定到 UI | MAD Skills

    PagingDataAdapter 是为比较 PagingData 的差异并聚合更新而优化的 RecyclerView Adapter,用以确保后台数据集的变化能够尽可能高效地传递。...RecyclerView.Adapter 的这一实现能够在 Pager 加载数据时自动对其进行通知,使其可以根据需要在列表顶部或底部插入项目。...我们还可以传入参数实现当出现错误时重试加载,我将会在下一篇文章中详细介绍。 后续 我们已经将 PagingData 绑定到了 UI 上!...结束加载时滚动到列表的顶部 使用 withLoadStateHeaderAndFooter() 实现当获取数据时将加载栏添加到 UI 上 感谢您的阅读!...敬请关注下一篇文章,我们将探讨用 Paging 实现以数据库作为单一来源,并详细讨论 LoadStateFlow!

    83120

    Jetpack新成员,Paging3从吐槽到真香

    另外这里还引入了Retrofit的库,因为待会我们会从网络上请求数据,并通过Paging 3进行分页展示。...最后需要调用LoadResult.Page()函数,构建一个LoadResult对象并返回。...然而凡事总有意外,比如说当前的网速不太好,虽然Paging 3会提前加载下一页的数据,但是当滑动到列表底部的时候,服务器响应的数据可能还没有返回,这个时候就应该在底部显示一个正在加载的状态。...第一点,我们使用Kotlin的高阶函数来给重试按钮注册点击事件,这样当点击重试按钮时,构造函数中传入的函数类型参数就会被回调,我们待会将在那里加入重试逻辑。...这样我们就把底部显示加载状态的功能完成了,现在来测试一下吧,效果如下图所示。 ? 可以看到,首先我在设备上开启了飞行模式,这样当滑动到列表底部时就会显示重试按钮。

    2.5K20

    RecycleView三问—腾讯真题

    和listview区别 Recycleview布局效果更多,增加了纵向,表格,瀑布流等效果 Recycleview去掉了一些api,比如setEmptyview,onItemClickListener等等...,给到用户更多的自定义可能 Recycleview去掉了设置头部底部item的功能,专向通过viewholder的不同type实现 Recycleview实现了一些局部刷新,比如notifyitemchanged...bindView mCacheViews(屏幕外),保存最近移出屏幕的ViewHolder,包含数据和position信息,复用时必须是相同位置的ViewHolder才能复用,应用场景在那些需要来回滑动的列表中,当往回滑动时...mRecyclerPool(缓存池),当cacheView满了后或者adapter被更换,将cacheView中移出的ViewHolder放到Pool中,放之前会把ViewHolder数据清除掉,所以复用时需要重新...25.1.0 (>=21)及以上使用Prefetch 功能,也就是预取功能,嵌套时且使用的是LinearLayoutManager,子RecyclerView可通过setInitialPrefatchItemCount

    1.2K40

    RecyclerView还能这么玩

    本文主要针对 RecyclerView 的可扩展性进行详解,将 RecyclerView 玩出新花样 —— 利用 RecyclerView 实现复杂布局。...底部是类似列表的样式。 2 实现思路 我第一想法就是使用 RecyclerView 进行嵌套。最外面是一个 RecyclerView,它中间再包裹这三个 RecyclerView 。...这三个 RecyclerView 分别处理头部、中间部分、底部的排版逻辑。然后再使用通用的 Adapter 进行设配,从而提高代码复用率。这想想还是挺不错。 不过这个方案很快就被我否定了。...因为谷歌是不建议 RecyclerView 进行嵌套。硬要这么做,也是没有毛病,所有的 item 会在第一次加载时被初始化,视图复用机制会被作废。...重载父类的方法 onAttachedToRecyclerView ,并动态为不同 position 设置不同的 SpanSize ?

    68230

    【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )

    源码分析 ---- 1、ItemTouchHelper.attachToRecyclerView 方法分析 ItemTouchHelper.attachToRecyclerView 方法 , 用于将...列表 , 并调用 setupCallbacks 方法 , 为 ItemTouchHelper 设置回调 ; 在 setupCallbacks 中 , 调用 RecyclerView.addOnItemTouchListener...; // 添加了每个条目上的触摸监听器 mOnItemTouchListener // 该监听器是定义在 ItemTouchHelper 中的成员变量...条目中的装饰 , 可以在条目组件 底部 上层 绘制 Canvas 图形 // ItemTouchHelper 继承 RecyclerView.ItemDecoration...设置条目装饰 , 该装饰可以在条目组件 底部 上层 绘制 Canvas 图形 , 具体的方法如下 : public class RecyclerView extends ViewGroup implements

    40020

    ItemTouchHelper 实现交互动画

    上下拖动时与其他item进行位置交换 ItemTouchHelper.Callback本身不具备将两个item互换位置的功能,但RecyclerView可以,我们可以在item拖动的时候把当前item与另一个...左右滑出屏幕时其他item补上 只要在item滑出屏幕时,将对应的数据删掉,再调用RecyclerView的notifyItemRemoved()方法刷新布局即可。...04.拖拽效果上优化 拖拽效果优化 在item被拖拽或侧滑时修改背景色,当动作结束后将背景色恢复回来,而ItemTouchHelper.Callback中正好有对应这两个状态的方法,分别是:onSelectedChanged...11.RecyclerView上拉加载 添加recyclerView的滑动事件,上拉加载分页数据,设置上拉加载的底部footer布局,显示和隐藏footer布局 12.RecyclerView缓存原理...控件滑动到顶部和底部 02.RecyclerView嵌套RecyclerView 条目自动上滚的Bug 03.ScrollView嵌套RecyclerView滑动冲突 04.ViewPager嵌套水平RecyclerView

    3.9K20

    使用 Material Design 组件实现 Material 动效

    本文会介绍上面每种模式,并解释如何将这些模式应用到您的应用中。我将会通过在示例应用 Reply (一个简单易用的邮件客户端) 中实现对应的效果来说明每个步骤。...在 Reply 示例中,我们在展示邮件列表的 Fragment (HomeFragment) 和邮件详情 Fragment (EmailFragment) 间添加了容器转换。...默认情况下,从详情页面返回时,这个 sharedElementEnterTransition 会自动反转并播放。...requireContext().themeColor(R.attr.colorSurface)) } 有关 MaterialContainerTransform 参数的详细信息,请参阅 动效文档 当一封邮件被点击时...点击文件夹、打开搜索、在底部导航间切换,这些都用到了 MDC-Android 的过渡效果。

    1.9K20
    领券