#android #kotlin #boolean #onclicklistener #data-class
#Android #kotlin #логическое #onclicklistener #класс данных
Вопрос:
Я работаю над приложением для викторины для своего проекта в университете, и я пытаюсь сохранить button и boolean, которые указывают, правильный ответ или нет в классе данных, и сохранить все кнопки во временном списке, чтобы я мог добавить onclick listener для всех них позже. Но когда я пытаюсь получить доступ к логическому значению, оно просто превращается в число 904. Вот мой код, касающийся этих кнопок.
val ansBtnList: MutableList<ButtonDataClass> = mutableListOf()
--------------------------------------------------------------
val ans = ButtonDataClass(Button(this), quizToShow.getValue(planets[0]).answers[i].isRight)
--------------------------------------------------------------
ansBtnList.add(ans)
--------------------------------------------------------------
for (i in 0..3) {
ansBtnList[i].btn.setOnClickListener { Log.d(null, ansBtnList[i].btn.right.toString()) }
}
Заранее спасибо!
РЕДАКТИРОВАТЬ: код ButtonDataClass:
data class ButtonDataClass (var btn: Button, var right: Boolean)
Комментарии:
1.
ansBtnList[i].btn.right
возможно, это не логическое значение. Не могли бы вы опубликовать этот класс?2. @shkschneider готово
Ответ №1:
Это не то right
, что вы думаете. btn
это кнопка. У кнопки есть right
поле, которое связано с ее координатами на экране. Вместо этого вы должны попробовать ansBtnList[i].right.toString()
.
Ответ №2:
btn.right ссылается на right
переменную Button
класса, а не на ту, которая присутствует в ButtonDataClass
заменить: ansBtnList[i].btn.setOnClickListener { Log.d(null, ansBtnList[i].btn.right.toString()) }
с: ansBtnList[i].btn.setOnClickListener { Log.d("your_tag_id", ansBtnList[i].right) }
Ответ №3:
Конечно, вы обращаетесь не к тому полю. ansBtnList[i].btn.right
дает вам правильное положение вашей кнопки в пикселях. Скорее сделайте ansBtnList[i].right