#android #kotlin #android-recyclerview #imageview #android-constraintlayout
Вопрос:
У меня есть RecyclerView
программа, которая загружает список сообщений из массива. Иногда в сообщениях будет URL-адрес изображения, и я хотел бы показать изображение в том ViewHolder
случае, если оно есть. Я бы очень хотел повторно использовать один и тот же файл макета, чтобы легко вносить изменения, а почтовые контейнеры выглядели одинаково. Каков наилучший подход для этого? У меня на уме три решения.
- Создайте
ImageView
вViewHolder
файле макета файл с высотой 0dp и измените высоту, если необходимо загрузить изображение. - Создайте отдельный файл макета для сообщений с изображениями и используйте его всякий раз, когда требуется загрузить изображение. Мне это не нравится, потому что, если я изменю другие типы сообщений, мне также придется изменить сообщения с изображениями, чтобы они выглядели одинаково.
- Создайте
ImageView
программу программно и используйтеConstraintLayout.LayoutParams
для настройки ограничений. Мне это не нравится, потому что кажется, что это легко сломается и будет трудно исправить.
Есть ли другие решения, которые лучше, чем те, которые я перечислил?
Ответ №1:
- Укажите
ImageView
в своем xml — файле высоту и ширинуwrap_content
. Он показывает изображение, когда изображение доступно, в противном случае оно не видно. - Проверьте, не является ли URL-адрес строки нулевым, установите видимость
android:visibility="visible"
изображений . Когда URL-адрес строки равен нулюImageView
, видимость набора равнаandroid:visibility="gone"
.