回收者视图中的第一个可见项目会拖累列表的其余部分

时间:2018-07-17 09:31:09

标签: android android-recyclerview kotlin

我的头像上有圈出前景的用户列表。如果用户在线,则圆圈为绿色,否则为红色。问题是,整个列表都是红色的(例如),直到我在应该是绿色的用户下滚动。

enter image description here

此后,当我向上滚动时,整个列表将显示绿色圆圈,直到到达离线用户为止,这将使整个列表变回红色。

enter image description here

我的绑定函数如下:

    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)
}

1 个答案:

答案 0 :(得分:3)

您需要致电mutate on the drawable otherwise you're changing the shared instance

val foreground = ContextCompat.getDrawable(itemView.context, R.drawable.ic_online)
                              .mutate()