#android #android-layout #kotlin
#Android #android-макет #Kotlin
Вопрос:
У меня возникли проблемы с четвертой строкой. В моем коде getLogo
возвращает целое число (идентификатор) изображения. Теперь я хочу использовать отображаемый идентификатор для изображения и вставить его в ImageView с указанным идентификатором. Однако слева от знака равенства я получаю сообщение об ошибке variable expected
, а справа написано Type Mismatch ... Required: ImageView Found: Int
.
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val layoutInflator = LayoutInflater.from(context)
val row = layoutInflator.inflate(R.layout.layoutlistviewloan, parent, false)
row.findViewById<ImageView>(R.id.institutionImage) = loansModel.loan[position].institution.getLogo()
}
Ответ №1:
findViewById()
это функция, которая возвращает a View
(в данном случае вы говорите, что это an ImageView
). Это не переменная ( val
или var
), которой вы можете присвоить значение.
Я предполагаю, что вы хотите найти это ImageView
в макете, а затем настроить его для отображения вашего идентификатора для рисования. Итак, вам нужно связать setImageResource
вызов с ImageView после его захвата
row.findViewById<ImageView>(R.id.institutionImage).setImageResource(drawableId)
вы могли бы вставить код «получение идентификатора для рисования» в качестве setImageResource
параметра
row.findViewById<ImageView>(R.id.institutionImage).setImageResource(loansModel.loan[position].institution.getLogo())
но лично я бы просто установил это как переменную, чтобы сделать ее более читаемой, вместо того, чтобы делать слишком много в одной строке (это может сбить с толку!)
val logoId = loansModel.loan[position].institution.getLogo()
row.findViewById<ImageView>(R.id.institutionImage).setImageResource(logoId)