diff --git a/app/src/main/java/com/github/libretube/helpers/ImageHelper.kt b/app/src/main/java/com/github/libretube/helpers/ImageHelper.kt index f2eba4e0d..75eeb38b4 100644 --- a/app/src/main/java/com/github/libretube/helpers/ImageHelper.kt +++ b/app/src/main/java/com/github/libretube/helpers/ImageHelper.kt @@ -64,6 +64,9 @@ object ImageHelper { * load an image from a url into an imageView */ fun loadImage(url: String?, target: ImageView, whiteBackground: Boolean = false) { + // clear image to avoid loading issues at fast scrolling + target.setImageBitmap(null) + // only load the image if the data saver mode is disabled if (DataSaverMode.isEnabled(target.context) || url.isNullOrEmpty()) return val urlToLoad = ProxyHelper.unwrapImageUrl(url) diff --git a/app/src/main/java/com/github/libretube/ui/adapters/CommentPagingAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/CommentPagingAdapter.kt index 2801aa1c8..a60fbf389 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/CommentPagingAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/CommentPagingAdapter.kt @@ -69,7 +69,6 @@ class CommentPagingAdapter( commentText.text = comment.commentText?.replace("", " ") ?.parseAsHtml(tagHandler = HtmlParser(LinkHandler(handleLink ?: {}))) - commentorImage.setImageDrawable(null) ImageHelper.loadImage(comment.thumbnail, commentorImage, true) likesTextView.text = comment.likeCount.formatShort() diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt index 3c3d9eac3..f95fb73cf 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt @@ -76,17 +76,20 @@ class PlaylistAdapter( override fun onBindViewHolder(holder: PlaylistViewHolder, position: Int) { val streamItem = sortedFeed[position] + val videoId = streamItem.url!!.toID() + holder.binding.apply { videoTitle.text = streamItem.title videoInfo.text = streamItem.uploaderName channelImage.isGone = true thumbnailDuration.setFormattedDuration(streamItem.duration!!, streamItem.isShort) + ImageHelper.loadImage(streamItem.thumbnail, thumbnail) + root.setOnClickListener { NavigationHelper.navigateVideo(root.context, streamItem.url, playlistId) } - val videoId = streamItem.url!!.toID() val activity = (root.context as BaseActivity) val fragmentManager = activity.supportFragmentManager diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SearchChannelAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SearchChannelAdapter.kt index 0f2fc74fd..c4b7caf72 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SearchChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SearchChannelAdapter.kt @@ -70,7 +70,6 @@ class SearchChannelAdapter : ListAdapter(SearchCa private fun bindVideo(item: ContentItem, binding: VideoRowBinding, position: Int) { binding.apply { - thumbnail.setImageDrawable(null) ImageHelper.loadImage(item.thumbnail, thumbnail) thumbnailDuration.setFormattedDuration(item.duration, item.isShort) videoTitle.text = item.title @@ -117,7 +116,6 @@ class SearchChannelAdapter : ListAdapter(SearchCa private fun bindChannel(item: ContentItem, binding: ChannelRowBinding) { binding.apply { - searchChannelImage.setImageDrawable(null) ImageHelper.loadImage(item.thumbnail, searchChannelImage, true) searchChannelName.text = item.name @@ -156,7 +154,6 @@ class SearchChannelAdapter : ListAdapter(SearchCa private fun bindPlaylist(item: ContentItem, binding: PlaylistsRowBinding) { binding.apply { - playlistThumbnail.setImageDrawable(null) ImageHelper.loadImage(item.thumbnail, playlistThumbnail) if (item.videos != -1L) videoCount.text = item.videos.toString() playlistTitle.text = item.name diff --git a/app/src/main/java/com/github/libretube/ui/adapters/VideosAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/VideosAdapter.kt index ee8e82362..f93f8486c 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/VideosAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/VideosAdapter.kt @@ -103,8 +103,6 @@ class VideosAdapter( @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: VideosViewHolder, position: Int) { - holder.trendingRowBinding?.thumbnail?.setImageDrawable(null) - val video = streamItems[position] val videoId = video.url?.toID() @@ -114,9 +112,9 @@ class VideosAdapter( } val context = ( - holder.videoRowBinding ?: holder.trendingRowBinding + holder.videoRowBinding ?: holder.trendingRowBinding ?: holder.allCaughtUpBinding - )!!.root.context + )!!.root.context val activity = (context as BaseActivity) val fragmentManager = activity.supportFragmentManager