我有一个PlayAll功能
-
循环一个短语列表(在recyclerView中),
-
突出显示所选ViewHolder的某种颜色
-
播放该短语的音频
-
将颜色更改回正常,然后转到下一个重复所有前面步骤的短语 .
我试过两种方法:
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 ()
}
这种方式创建了一个播放所有音频的反馈循环,直到应用程序崩溃 .
第一种方式不那么疯狂,似乎更接近解决方案的实际情况,但我正在努力弄明白 .
提前致谢 .
1 回答
在第二个示例中将
while
更改为if
,并将<=
更改为<
: