У меня есть функция расширения до ImageView
класса. Я реализовал некоторую логику о том, как загрузить изображение в соответствии с переданными аргументами. Но здесь я застрял.
Эти fit()
, centerCrop()
и т. Д. Возвращают Пикассо RequestCreator
, который я даже не могу построить (у него есть конструктор частного пакета), чтобы изменить его позже (на основе аргументов).
Я просто не знаю, как это сделать. Единственный способ, которым мне удалось это сделать, - как вы можете видеть ниже (будьте осторожны: у вас начнут кровоточить глаза). Я не могу найти «нормальный», «хороший» способ сделать это.
Итак, я спрашиваю вас: как мне подходить к этому?
fun ImageView.load(resId: Int, centerCrop: Boolean = true, fit: Boolean = true) {
// Improve this, there must be a better way
if (centerCrop && fit) {
Picasso.get()
.load(resId)
.fit()
.centerCrop()
.into(this)
} else if (centerCrop && !fit) {
Picasso.get()
.load(resId)
.centerCrop()
.into(this)
} else if (!centerCrop && fit) {
Picasso.get()
.load(resId)
.fit()
.into(this)
} else if (!centerCrop && !fit) {
Picasso.get()
.load(resId)
.into(this)
}
}