屏幕小部件中 ListView 中的图像混合在一起

Posted

技术标签:

【中文标题】屏幕小部件中 ListView 中的图像混合在一起【英文标题】:Images in ListView in a screen widget are mixed 【发布时间】:2021-02-19 11:04:09 【问题描述】:

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

在从 RemoteViewsService.RemoteViewsFactory 扩展的类中,在方法 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")
        
    

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

最好的纠正方法是什么?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于屏幕小部件中 ListView 中的图像混合在一起的主要内容,如果未能解决你的问题,请参考以下文章