gpt4 book ai didi

android - 仅在 recyclerview 新项目出现时启动声音

转载 作者:行者123 更新时间:2023-12-02 13:43:22 24 4
gpt4 key购买 nike

所以,我正在使用firebase,每次有一个新项目填充我的recyclerview时,我都想发出声音。

我所做的是放置一个界面,该界面将在每次发生新绑定(bind)时启动

适配器

 inner class ProductViewHolder(itemView: View) : BaseViewHolder<Product>(itemView) {
override fun bind(item: Pedido, position: Int) {


itemListener?.launchNotificationSound()

}

现在,在我看来,我只是用这个界面播放声音
override fun launchNotificationSound() {
mediaPlayer?.start()
}

这工作得很好!

但是当我滚动时,很明显 onBind 会再次触发,所以我正在寻找一种方法来播放这个声音,只要有新项目进入 recyclerview,并不总是在绑定(bind)时

有什么建议吗?

我正在使用带有实时更新的firebase firestore,所以当我向我的数组添加一个新元素时,它会在recyclerview中实时显示,我只想在添加新项目后发出声音

问题是,如果我在实时监听器上播放声音,它也会在删除项目以及在数据库中对该项目进行新更改时触发,而我的目标是仅在新数据到来时播放声音当它更新时

最佳答案

您可以添加 DefaultItemAnimator 以这种方式进行回收。每次向 recyclerview 添加新项目时, onAddFinished 方法触发。

class MyDefaultItemAnimator(var music: MusicPlayer): DefaultItemAnimator() {
override fun onAddFinished(item: RecyclerView.ViewHolder?) {
super.onAddFinished(item)
mediaPlayer?.start()
}
}

然后将此添加到您的回收站 View 中。
mRecyclerView.setItemAnimator(MyDefaultItemAnimator())

关于android - 仅在 recyclerview 新项目出现时启动声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61388708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com