У меня есть приложение, что некоторые предметы являются аудиоклипами. Когда я нажимаю на одну из них, воспроизводится аудиоклип. Однако я хочу показать что-то вроде анимации, чтобы показать, какой элемент воспроизводится в данный момент. Вот код.
private fun setUpAudioReceived(holder: ReceivedAudio, chatMessageItem: ChatMessageItem?) {
chatMessageItem?.let { messageItem ->
messageItem.firstName?.let {
holder.rcvAudName.text = "${messageItem.firstName} ${messageItem.lastName}"
}
holder.rcvAudTime.text =
getDateStringWithNoSeconds(messageItem.msgWithMsgq.message?.messageDate)
//Here is the click listener that informs the interface
// of the mainActivity to play the clip
holder.itemView.setOnClickListener {
itemRecyclerCallback.onRowClicked(holder.adapterPosition, messageItem, holder, true)
}
}
}
Адаптер утилизатора имеет функцию обратного вызова, которая воспроизводит аудиоклип
override fun onRowClicked(pos: Int, messageItem: ChatMessageItem, view: RecyclerView.ViewHolder) {
when (messageItem.message.msgType) {
MSG_TYPE_FILE -> {
audioPlay(Uri.parse(message.localUri))
// Update the current Item......
}
}
}
Так что здесь я должен уведомить указанный элемент c, чтобы сделать что-то в его интерфейсе.
К вашему сведению, я использую PagedListAdapter, который выбирает сообщения из базы данных Room через LiveData Observer, а затем отправляю List