У меня есть функция PlayAll, которая должна
- цикл по списку фраз (в программе recyclerView),
- выделите выбранный ViewHolder определенного цвета
- воспроизвести аудио этой фразы
- измените цвет на нормальный и перейдите к следующей фразе, повторяя все предыдущие шаги.
Я пробовал 2 способа:
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 ()
}
Таким образом создается петля обратной связи для воспроизведения всех аудиофайлов до тех пор, пока приложение не выйдет из строя.
Первый способ менее сумасшедший и кажется ближе к тому, что на самом деле есть решение, но я изо всех сил пытаюсь понять это.
Заранее спасибо.