import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.RadioButton import androidx.recyclerview.widget.RecyclerView import com.jnesis.capacitor.brightcoveplayer.capacitorbrightcoveplayer.R import com.jnesis.capacitor.brightcoveplayer.model.studentPopUpQuestions.PopUpQuestionAnswers import kotlin.coroutines.coroutineContext class AnswersAdapter(private val mList: ArrayList, val answerChecked : Boolean) : RecyclerView.Adapter() { var lastCheckedPosition = -1 var onItemClick: ((PopUpQuestionAnswers) -> Unit)? = null var multipleSelectedAnswers: ArrayList? = ArrayList() // create new views override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { // inflates the card_view_design view // that is used to hold list item val view = LayoutInflater.from(parent.context) .inflate(R.layout.radio_button, parent, false) return ViewHolder(view) } // binds the list items to a view override fun onBindViewHolder(holder: ViewHolder, position: Int) { val answerItem = mList[position] holder.answer.text = answerItem.questionAnswerBody if(answerChecked) { if(answerItem.isCorrect == true) holder.answer.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.correct_answer,0, 0,0) else holder.answer.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.wrong_answer,0,0,0) } else { holder.answer.setChecked(position == lastCheckedPosition); holder.answer.setOnClickListener(View.OnClickListener { val copyOfLastCheckedPosition = lastCheckedPosition lastCheckedPosition = holder.bindingAdapterPosition notifyItemChanged(copyOfLastCheckedPosition) notifyItemChanged(lastCheckedPosition) holder.answer.isClickable = false holder.answer.isEnabled = false onItemClick?.invoke(answerItem) }) } } // return the number of the items in the list override fun getItemCount(): Int { return mList.size } // Holds the views for adding it to image and text class ViewHolder(ItemView: View) : RecyclerView.ViewHolder(ItemView) { val answer: RadioButton = itemView.findViewById(R.id.radio_answer) } }