Как использовать Spinner внутри Recycler View?

#android #android-studio #kotlin #android-recyclerview #android-spinner

#Android #android-studio #kotlin #android-recyclerview #android-счетчик

Вопрос:

ребята. В последние дни я испытывал трудности, потому что я хочу реализовать представление Recycler, которое в основном представляет собой просто счетчик, который будет отображаться в зависимости от количества подсчитанных пользователей. Правда в том, что я никогда не использовал счетчик внутри представления recycler, и я думал, что это будет то же самое, что строка, но это не так.

Шаги, которым я следовал, такие же, как и в обычном представлении Recycler, когда я использую строки

Я создал класс модели (Porcentaje.kt)

 import android.widget.Spinner

class Porcentaje (var porcent: Spinner)
  

Затем адаптированный (porcentajeAdapter.kt) и внутри адаптера находится держатель представления вверху

 class porcentajeAdapter(private var mContext: Context, var califList:ArrayList<Porcentaje>,  var numCalif: Int): RecyclerView.Adapter<porcentajeAdapter.porcentaje>() {

lateinit var prefs: SharedPreferences
lateinit var editor: SharedPreferences.Editor
lateinit var prefs2: SharedPreferences
lateinit var editor2: SharedPreferences.Editor

class porcentaje(itemView: View) : RecyclerView.ViewHolder(itemView) {
    var spinner: Spinner = itemView.findViewById(R.id.sp_ca)
}

override fun getItemCount(): Int {
    return califList.size
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): porcentaje {
    val vista: View =
        LayoutInflater.from(parent.context).inflate(R.layout.fragment_frag_her, parent, false)
    prefs = mContext.getSharedPreferences("Herramientas", Context.MODE_PRIVATE)
    editor = prefs.edit()
    prefs2 = mContext.getSharedPreferences("TiendaShare", Context.MODE_PRIVATE)
    editor2 = prefs.edit()

    return porcentaje(vista)
}

override fun onBindViewHolder(holder: porcentaje, position: Int) {
    val porcentaje: Porcentaje = califList[position]
    holder.spinner = porcentaje.porcent
}}
  

Затем передаю фургон моему Фрагменту

 class fragHer(var nCalif: Int) : Fragment() {

var califList = ArrayList<Porcentaje>()
var spCalif: Spinner?=null
lateinit var adapter: porcentajeAdapter
lateinit var prefs: SharedPreferences
lateinit var editor: SharedPreferences.Editor



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    arguments?.let {

    }
}

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment

    var vista = inflater.inflate(R.layout.fragment_frag_her, container, false)
    val context = vista.context


    prefs = context.getSharedPreferences("Herramientas", Context.MODE_PRIVATE)
    prefs.getInt("NumAsesores", 0).let {
        if (it== 0) initData()
            else init(it)
    }



    //findViews
    spGerente = vista.findViewById(R.id.spGerente)
    spCalif = vista.findViewById(R.id.sp_ca)



    //RV
    adapter = porcentajeAdapter(context, califList, nCalif)
    val rvObject: RecyclerView = vista.findViewById(R.id.rv_pAsesor)

    rvObject.adapter = adapter
    rvObject.layoutManager = LinearLayoutManager(context)
    rvObject.setHasFixedSize(true)

    return vista




}

private fun initData() {
    spCalif?.let { Porcentaje(it) }?.let { califList.add(it) }

}
private fun init(ases: Int){
    for (x in 0 until ases){
        spCalif?.let { Porcentaje(it) }?.let { califList.add(it) }
    }
}
  

Однако, похоже, это не работает.

Также мой счетчик восстанавливает arraylist из string.

Есть какие-нибудь советы по использованию счетчика внутри RV? Как вы, ребята, можете видеть, это в Kotlin, но любая помощь будет очень оценена

Спасибо (: