Skip to content

Commit 42dfee0

Browse files
committed
feat: adding view binding to carousel image view
1 parent 1592ede commit 42dfee0

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

app/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ android {
5050
excludes += "/META-INF/{AL2.0,LGPL2.1}"
5151
}
5252
}
53+
buildFeatures {
54+
viewBinding = true
55+
}
5356
}
5457

5558
dependencies {

app/src/main/java/com/paradoxo/materialgram/presentation/adapter/ImageAdapter.kt

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@ package com.paradoxo.materialgram.presentation.adapter
22

33

44
import android.content.Context
5+
import android.os.Build
56
import android.view.LayoutInflater
6-
import android.view.View
77
import android.view.ViewGroup
88
import android.widget.ImageView
99
import androidx.recyclerview.widget.RecyclerView
10+
import coil.ImageLoader
11+
import coil.decode.GifDecoder
12+
import coil.decode.ImageDecoderDecoder
1013
import coil.load
1114
import com.paradoxo.materialgram.R
15+
import com.paradoxo.materialgram.databinding.ImageItemBinding
1216
import 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

Comments
 (0)