屏幕小部件中 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 中的图像混合在一起的主要内容,如果未能解决你的问题,请参考以下文章

如何通过滑翔(或其他)在listView项目中加载小部件中的图像

如何在小部件测试中找到屏幕外的 ListView 子项?

为啥所有 Slider 小部件在 ListView.builder 中一起移动?

颤动 - 是否可以在同一屏幕上沿ListView显示小部件?

具有不同 ListView 数据的相同小部件

如何在 Flutter 的同一屏幕上沿 ListView 显示小部件?