屏幕小部件中的 ListView 中的图像是混合的

Images in ListView in a screen widget are mixed

我正在开发一个屏幕小部件,我在其中使用 ListView 加载数据。

在从RemoteViewsService.RemoteViewsFactory扩展的class中,在getViewAt(position: Int)方法中;我尝试为远程视图加载图像:

    // Set avatar if any.
    if (contact.avatarUri != null) {
        try {

            val uri = Uri.parse(contact.avatarUri)

            val bitmap: Bitmap = Glide.with(context)
                    .asBitmap()
                    .load(uri)
                    .submit(avatarSize, avatarSize)
                    .get()

            val finalBitmap = getCircleBitmap(bitmap)

            view.setImageViewBitmap(id.customAvatarImageView, finalBitmap)
            view.setViewVisibility(id.customAvatarImageView, View.VISIBLE)
            view.setViewVisibility(id.avatarImageView, View.GONE)

        } catch (e: Exception) {
            Log.d(TAG, "Error when loading custom avatar: ${e.message}")
        }
    }

问题是,当我向下滚动,然后向上滚动时,这些图像在条目之间 'mixed':例如,属于条目 1 的图像现在位于条目 3;所以当我向上滚动时,条目的图像不正确。

纠正该问题的最佳方法是什么?

解决方法是在 getViewAt() 中重置所有视图。