首页 > 其他分享 >RecyclerView 处理动画不频繁更新

RecyclerView 处理动画不频繁更新

时间:2023-04-11 14:02:09浏览次数:64  
标签:动画 listOf holder 频繁 item payloads recordStatus position RecyclerView


ChatGPT给了三种方案

我用了第一种

override fun onBindViewHolder(
        holder: RecyclerView.ViewHolder, position: Int, payloads: MutableList<Any>
    ) {

        when (getItemViewType(position)) {
            ITEM_VIEW_TYPE -> {
                val item = mModel.mListDatas[position] as ReadAfterBean
                if (holder !is ReadAfterSentenceHolder) {
                    return
                }
                holder.binding.apply {

                    for (payload in payloads) {
                        when (payload) {
                            in listOf("localReadsSentenceData") -> updateSentenceView(
                                item.localReadsSentenceData, this, position
                            )

                            in listOf("recordStatus") -> updateChangeStatus(
                                item.recordStatus, this, position
                            )

                            in listOf("localDialogActionData") -> updateActionData(
                                item.localDialogActionData, this, position
                            )

                            in listOf("playingData") -> updateSentencePlayingState(
                                item.playingData, this
                            )
                        }
                    }
                }


            }

            BOTTOM_STATUS_VIEW_TYPE -> {


            }

            else -> throw IllegalArgumentException("Invalid view type")
        }

        super.onBindViewHolder(holder, position, payloads)

    }

重写   holder: RecyclerView.ViewHolder, position: Int, payloads: MutableList<Any> 

三个参数的方案
payloads 这个 我从未用过。但是是真好用
 

这个方法重写后不要删除原来的 onBindViewHolder  还是照常设置数据,

当遇到频繁要刷新的数据时。

在需要频繁更新的数据中去设置。

if (mModel.mListDatas[position] is ReadAfterBean) {
            val readAfterBean = mModel.mListDatas[position] as ReadAfterBean

            readAfterBean.recordStatus = data
            notifyItemChanged(position, "recordStatus")


        }

这样的数据不会频繁的干扰动画同UI的刷新。

标签:动画,listOf,holder,频繁,item,payloads,recordStatus,position,RecyclerView
From: https://blog.51cto.com/u_14523369/6183206

相关文章

  • RecyclerView 上拉加载更多
    //初始化滚动事件valscrollListener=object:RecyclerView.OnScrollListener(){overridefunonScrolled(recyclerView:RecyclerView,dx:Int,dy:Int){super.onScrolled(recyclerView,dx,dy)if(dy>0){......
  • 用quasar+vue3+组合式api 实现小米商城标题栏动画
    先来看一下小米商城标题栏动画:  小米商城标题栏动画主要特点:移入时二级菜单缓慢出现;移出时二级菜单缓慢消失;在一级菜单之间移动时,二级菜单内容直接切换,没有过渡效果。实现思路一、纯css实现(❌)首先肯定是考虑:hover,但是经过试验发现,:hover可以实现鼠标移入移出时的......
  • VUE:引入腾讯地图并实现轨迹动画
    VUE:引入腾讯地图并实现轨迹动画Postedon 2022-09-2215:07  书中枫叶 阅读(1421) 评论(4)  编辑  收藏  举报腾讯位置服务JavaScriptAPI效果:引入步骤:在html中通过引入script标签加载API服务在一个盒子元素div中预先准备地图容器,并在CSS样式中定义......
  • d3.js制作蜂巢图表带动画效果
     以上是效果图,本图表使用d3.jsv4制作。图表主要功能是在六边形格子中显示数据,点击底部图标可以切换指定格子高亮显示,图表可以随浏览器任意缩放。 1.图表的主体结构是由正六边形组成,使用d3生成六边形可以使用d3-hexbin.js,生成六边形比较方便,只要给定中心点坐标和半径即可生......
  • 如何通css实现 渐变下划线,以及交互动画
    <h2class="title"><span>围殴围殴我饿我饿我饿哦我饿围围殴围殴我饿我饿我饿哦我饿围殴围殴我饿我饿我饿哦我饿我饿围殴围殴殴围殴我饿我饿我饿哦我饿我饿围殴围殴</span></h2>css:.title{line-height:2;color:#333;}.titlespan{font-weight:800;backgro......
  • android-RecyclerView实现拖动排序
    android:RecyclerView实现拖动排序最近项目中需要实现对某一类条目进行拖动排序功能,实现技术方案就是利用ItemTouchHelper绑定RecyclerView、ItemTouchHelper.Callback来实现UI更新,并且实现动态控制是否开启拖动功能。其中,ItemTouchHelper是Google在support-v7包中添加的,其于Rec......
  • Blender动画节点插件用户指南-接口
    推荐:将 NSDT场景编辑器 加入你的3D开发工具链。接口大部分界面位于节点编辑器中,而其余部分该界面存在于其他区域,例如3D视口。动画节点有自己的节点编辑器,您可以通过以下方式选择单击“涂料表”图标在工具栏中。一个新的可以通过单击“新建”按钮来添加节点树。节点......
  • 第136篇:Three.js基础入门动画API:setInterval 与 requestAnimationFrame的区别
    好家伙,书接上文 functionanimate(){//请求-动画-框架requestAnimationFrame(animate);//改变正方体在场景中的位置,让正方体动起来cube.rotation.x+=0.01;cube.rotation.y+=0.01;renderer.render(......
  • 数据挖掘(3.1)--频繁项集挖掘方法
    目录1.Apriori算法Apriori性质伪代码apriori算法apriori-gen(Lk-1)【候选集产生】has_infrequent_subset(c,Lx-1)【判断候选集元素】例题求频繁项集:对于频繁项集L={B,C,E},可以得到哪些关联规则:2.FP-growth算法FP-tree构造算法【自顶向下建树】insert_tree([plP],T)利用FP-tree挖掘......
  • css 实现文字交融展开动画
    css实现文字交融展开动画效果  ......