Как я могу связать элемент RecyclerView, который представляет объект класса с этим объектом класса? Котлин - PullRequest
1 голос
/ 29 марта 2019

У меня RecyclerView в моей деятельности с предметами LiveData<List<Class>>. Мне нужно получить объект класса, который представляет собой элемент RecyclerView, по которому щелкнули.

Теперь я устанавливаю id объекта класса внутри невидимого TextView поля. Я знаю, что это плохой способ решить эту проблему. Вот мой RecyclerAdapter код

override fun onBindViewHolder(holder: AlarmsRecyclerAdapter.AlarmItemHolder, position: Int) {
        mAlarmViewModel = ViewModelProviders.of(fragment)[AlarmViewModel::class.java]
        if (mAlarms != null) {
            val current = mAlarms!!.get(position)

            // Here i set the id. I know that this is wrong way
            holder.view.alarm_id.text = current.id.toString()

            holder.view.edit_time_button.text = current.printTime()
            holder.view.switch_alarm_enabled.isChecked = current.enabled

            holder.view.switch_alarm_enabled.setOnClickListener {
                current.enabled = !current.enabled
                mAlarmViewModel.insert(current)
                notifyDataSetChanged()
            }
        } else {
            // Covers the case of data not being ready yet.
            holder.view.edit_time_button.text = "no timer"
        }
    }

А вот и мой RecyclerView предмет

class AlarmItemHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener {
        var view: View = v

        init {
            v.setOnClickListener(this)
        }

        override fun onClick(v: View) {
            Log.d("RecyclerView", "CLICK!")

            var intent = Intent(v.context, AlarmActivity::class.java)
            intent.putExtra("alarm_id", view.alarm_id.text.toString().toInt())
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
            v.context.startActivity(intent)
        }

Так, как я могу связать предмет класса с RecyclerView предметом?

1 Ответ

2 голосов
/ 29 марта 2019

Добавьте параметр в ваш конструктор держателя вида. Вот так

AlarmItemHolder(v: View, data : Data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...