Ну, вам также нужно опубликовать код адаптера, но здесь я привожу пример того, как я буду действовать в адаптере.
val adapterGender = ArrayAdapter<String>(context, layoutCode, context.resources.getStringArray(R.array.genderArray))
override fun onBindViewHolder(holder: ViewHolder?, position: Int) {
val data = listOfItems[holder!!.adapterPosition]
holder.etName?.setText(data.name)
holder.spGender?.adapter = adapterGender
holder.spGender?.setSelection(adapterGender.getPosition(data.gender))
}
{
val etName: AppCompatEditText? = itemView?.findViewById(R.id.etName)
val spGender: AppCompatSpinner? = itemView?.findViewById(R.id.spGender)
init {
//listener for gender selection
spGender?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(p0: AdapterView<*>?) {
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
listOfItems[adapterPosition].gender = p0?.selectedItem.toString()
Log.d("TAG", p0?.selectedItem.toString())
}
}
}
}
так что в основном я устанавливаю onItemSelectedListener
на spinner и слушаю изменения значений, а затем устанавливаю его в модели / pojo для сохранения и присваиваю в onBindViewHolder
для установки обратных значений.