@@ -2,13 +2,17 @@ package com.paradoxo.materialgram.presentation.adapter
22
33
44import android.content.Context
5+ import android.os.Build
56import android.view.LayoutInflater
6- import android.view.View
77import android.view.ViewGroup
88import android.widget.ImageView
99import androidx.recyclerview.widget.RecyclerView
10+ import coil.ImageLoader
11+ import coil.decode.GifDecoder
12+ import coil.decode.ImageDecoderDecoder
1013import coil.load
1114import com.paradoxo.materialgram.R
15+ import com.paradoxo.materialgram.databinding.ImageItemBinding
1216import com.paradoxo.materialgram.domain.model.Media
1317
1418
@@ -18,24 +22,40 @@ class ImageAdapter(
1822) :
1923 RecyclerView .Adapter <ImageAdapter .ViewHolder >() {
2024 override fun onCreateViewHolder (parent : ViewGroup , viewType : Int ): ViewHolder {
21- val view : View =
22- LayoutInflater .from(context).inflate( R .layout.image_item , parent, false )
23- return ViewHolder (view )
25+
26+ val binding = ImageItemBinding .inflate( LayoutInflater .from(parent. context), parent, false )
27+ return ViewHolder (binding )
2428 }
2529
2630 override fun onBindViewHolder (holder : ViewHolder , position : Int ) {
27- holder.imageView.load(mediaArrayList[position].url)
31+ holder.imageView.load(mediaArrayList[position].url, imageLoaderGif())
32+ }
33+
34+ private fun imageLoaderGif (): ImageLoader {
35+ val imageLoader = ImageLoader .Builder (context)
36+ .components {
37+ if (Build .VERSION .SDK_INT >= 28 ) {
38+ add(ImageDecoderDecoder .Factory ())
39+ } else {
40+ add(GifDecoder .Factory ())
41+ }
42+ }
43+ .placeholder(R .drawable.shimmer_animation)
44+ .error(R .drawable.ic_error)
45+ .build()
46+ return imageLoader
2847 }
2948
3049 override fun getItemCount (): Int {
3150 return mediaArrayList.size
3251 }
3352
34- class ViewHolder (itemView : View ) : RecyclerView.ViewHolder(itemView) {
53+ class ViewHolder (itemView : ImageItemBinding ) :
54+ RecyclerView .ViewHolder (itemView.root) {
3555 var imageView: ImageView
3656
3757 init {
38- imageView = itemView.findViewById( R .id.carousel_image_view)
58+ imageView = itemView.carouselImageView
3959 }
4060 }
4161}
0 commit comments