我有一个PlayAll功能,该功能应该
我尝试了两种方法:
for (i in termList.indices){
val viewHolder: RecyclerView.ViewHolder = recyclerView!!.findViewHolderForAdapterPosition(i)
val mp = MediaPlayer.create (activity, termList[i].audio!!)
viewHolder.itemView.setBackgroundColor(Color.parseColor("#D3D3D3"))
mp.setOnCompletionListener {
viewHolder.itemView.setBackgroundColor(Color.parseColor("#FFFFFF"))
}
mp.start ()
}
通过这种方式一次播放它们,将所有单元格的颜色更改为#D3 ...,并在完成后仅通过将颜色设置为#FFFFFF进行迭代。
fun playAllAudio(i: Int){
while (i <= termList.size){
val viewHolder: RecyclerView.ViewHolder = recyclerView!!.findViewHolderForAdapterPosition(i)
val mp = MediaPlayer.create (activity, termList[i].audio!!)
viewHolder.itemView.setBackgroundColor(Color.parseColor("#D3D3D3"))
mp.setOnCompletionListener {
viewHolder.itemView.setBackgroundColor(Color.parseColor("#FFFFFF"))
playAllAudio(i+1)
}
mp.start ()
}
这种方式创建了一个播放所有音频直到应用崩溃的反馈循环。
第一种方法不太疯狂,似乎更接近解决方案的实际含义,但我一直在努力寻找解决方案。
先谢谢了。
答案 0 :(得分:1)
在第二个示例中,将while
更改为if
,然后将<=
更改为<
:
fun playAllAudio(i: Int){
if (i < termList.size){
val viewHolder: RecyclerView.ViewHolder = recyclerView!!.findViewHolderForAdapterPosition(i)
val mp = MediaPlayer.create (activity, termList[i].audio!!)
viewHolder.itemView.setBackgroundColor(Color.parseColor("#D3D3D3"))
mp.setOnCompletionListener {
viewHolder.itemView.setBackgroundColor(Color.parseColor("#FFFFFF"))
playAllAudio(i+1)
}
mp.start ()
}
}