我的头像上有圈出前景的用户列表。如果用户在线,则圆圈为绿色,否则为红色。问题是,整个列表都是红色的(例如),直到我在应该是绿色的用户下滚动。
此后,当我向上滚动时,整个列表将显示绿色圆圈,直到到达离线用户为止,这将使整个列表变回红色。
我的绑定函数如下:
fun bind(userInfo: UserInfo) {
val foreground = ContextCompat.getDrawable(itemView.context, R.drawable.ic_online)
foreground?.colorFilter = PorterDuffColorFilter(ContextCompat.getColor(
itemView.context, when {
userInfo.status == Status.OFFLINE -> R.color.offline_red
else -> R.color.colorAccent
}), PorterDuff.Mode.SRC_ATOP)
itemView.profilePictureImageView.foreground = foreground
val options = RequestOptions()
options.placeholder(R.drawable.ic_default_avatar)
options.circleCrop()
Glide.with(itemView.context)
.load("http://scdb.abradio.cz/uploads/interprets/r/radek-rettegy.jpg")
.apply(options)
.into(itemView.profilePictureImageView)
}
答案 0 :(得分:3)
您需要致电mutate
on the drawable otherwise you're changing the shared instance:
val foreground = ContextCompat.getDrawable(itemView.context, R.drawable.ic_online)
.mutate()