屏幕小部件中的 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() 中重置所有视图。
我正在开发一个屏幕小部件,我在其中使用 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() 中重置所有视图。