RecyclerView更新时如何自动向下滚动

Posted

技术标签:

【中文标题】RecyclerView更新时如何自动向下滚动【英文标题】:How to automatically scroll down when RecyclerView is renewed 【发布时间】:2021-11-07 06:29:36 【问题描述】:

我有一个 RecyclerView,我试图让它在每次弹出新消息时向下滚动。我很难做到这一点。我什至不确定我是否在正确的地方做这件事。我在函数onBindViewHolder() 内的 RecyclerView 适配器内执行此操作。代码如下:

override fun onBindViewHolder(holder: TodoViewHolder, position: Int) 
    holder.itemView.apply 
        tvTitle.text = messages[position].title //here I am setting the title - the name of the person who wrote the message
        tvMessage.text = messages[position].message //here I am setting the message - the message written by the person
        rvTodos.smoothScrollToPosition(itemCount - 1) //and here, at last, I am setting the my recyclerview(rvTodos) to smoothly scrool down to the itemCount position (the size of the messages array)
   


override fun getItemCount(): Int 
    return messages.size


【问题讨论】:

试试 recyclerView.smoothScrollToPosition(listSize);当您的 recyclerview 更新时 你的意思是messages.size?如果是这样,它不起作用 是的,你在哪里执行这个? 在回收器视图适配器中,在 onBindViewHolder 内部 不,您需要在 Activity 或 ViewModel 中执行此操作,无论您要更新最终为您的 recyclerview 提供的 ArrayList 的内容 【参考方案1】:

我只是没有在正确的位置更新回收站视图。当它实际上需要在我的活动或视图模型中更新时,我试图在 recyclerview 适配器内部更新它 - 我在其中更新了我的 messagesArrayList 的内容!解决者:Tendai(在问题的 cmets 中)

【讨论】:

以上是关于RecyclerView更新时如何自动向下滚动的主要内容,如果未能解决你的问题,请参考以下文章

更新新项目时如何在 WinForms ListView 控件中自动向下滚动?

向下滚动时 RecyclerView 项目之间的间隙较大

潜在的 Glide 错误 - 在 Android TV 上使用 Dpad 快速滚动时,RecyclerView 项目失去焦点

向下滚动然后再次向上滚动后,recyclerview 项目之间出现间隙。请看详情

AppBarLayout 并不总是在向下滚动时重新输入

插入数据时Recyclerview自动向上滚动