Skip to content

Commit a00a79c

Browse files
committed
🔨 update adapter DIFF_CALLBACK to with reusable
1 parent fdbf261 commit a00a79c

File tree

7 files changed

+30
-46
lines changed

7 files changed

+30
-46
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@
1414
.cxx
1515
local.properties
1616
/buildSrc/.gradle
17-
/buildSrc/build
17+
/buildSrc/build
18+
/.idea/sonarlint
19+
/.idea/kotlinc.xml

.idea/compiler.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/rivaldy/id/cocktail/ui/MainAdapter.kt

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ package com.rivaldy.id.cocktail.ui
22

33
import android.view.LayoutInflater
44
import android.view.ViewGroup
5-
import androidx.recyclerview.widget.DiffUtil
65
import androidx.recyclerview.widget.ListAdapter
76
import androidx.recyclerview.widget.RecyclerView
87
import com.bumptech.glide.Glide
98
import com.rivaldy.id.cocktail.R
109
import com.rivaldy.id.cocktail.databinding.RowItemCocktailBinding
1110
import com.rivaldy.id.core.data.model.api.drink.DrinkData
11+
import com.rivaldy.id.core.extensions.getDiffCallback
1212

1313
/**
1414
* Created by rivaldy on 05/01/22.
@@ -17,7 +17,7 @@ import com.rivaldy.id.core.data.model.api.drink.DrinkData
1717

1818
class MainAdapter(
1919
private val listener: (DrinkData) -> Unit
20-
) : ListAdapter<DrinkData, MainAdapter.ViewHolder>(DIFF_CALLBACK) {
20+
) : ListAdapter<DrinkData, MainAdapter.ViewHolder>(getDiffCallback()) {
2121

2222
inner class ViewHolder(private val binding: RowItemCocktailBinding) : RecyclerView.ViewHolder(binding.root) {
2323
fun bindItem(item: DrinkData) {
@@ -39,16 +39,4 @@ class MainAdapter(
3939
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
4040
holder.bindItem(getItem(position))
4141
}
42-
43-
companion object {
44-
private val DIFF_CALLBACK = object : DiffUtil.ItemCallback<DrinkData>() {
45-
override fun areItemsTheSame(oldItem: DrinkData, newItem: DrinkData): Boolean {
46-
return oldItem.idDrink == newItem.idDrink
47-
}
48-
49-
override fun areContentsTheSame(oldItem: DrinkData, newItem: DrinkData): Boolean {
50-
return oldItem == newItem
51-
}
52-
}
53-
}
5442
}

app/src/main/java/com/rivaldy/id/cocktail/ui/filter_dialog/FilterAdapter.kt

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package com.rivaldy.id.cocktail.ui.filter_dialog
22

33
import android.view.LayoutInflater
44
import android.view.ViewGroup
5-
import androidx.recyclerview.widget.DiffUtil
65
import androidx.recyclerview.widget.ListAdapter
76
import androidx.recyclerview.widget.RecyclerView
87
import com.rivaldy.id.cocktail.databinding.RowItemFilterBinding
98
import com.rivaldy.id.core.data.model.local.FilterDataLocal
9+
import com.rivaldy.id.core.extensions.getDiffCallback
1010

1111
/**
1212
* Created by rivaldy on 05/01/22.
@@ -15,7 +15,7 @@ import com.rivaldy.id.core.data.model.local.FilterDataLocal
1515

1616
class FilterAdapter(
1717
private val listener: (FilterDataLocal) -> Unit
18-
) : ListAdapter<FilterDataLocal, FilterAdapter.ViewHolder>(DIFF_CALLBACK) {
18+
) : ListAdapter<FilterDataLocal, FilterAdapter.ViewHolder>(getDiffCallback()) {
1919

2020
inner class ViewHolder(private val binding: RowItemFilterBinding) : RecyclerView.ViewHolder(binding.root) {
2121
fun bindItem(item: FilterDataLocal) {
@@ -32,16 +32,4 @@ class FilterAdapter(
3232
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
3333
holder.bindItem(getItem(position))
3434
}
35-
36-
companion object {
37-
private val DIFF_CALLBACK = object : DiffUtil.ItemCallback<FilterDataLocal>() {
38-
override fun areItemsTheSame(oldItem: FilterDataLocal, newItem: FilterDataLocal): Boolean {
39-
return oldItem.name == newItem.name
40-
}
41-
42-
override fun areContentsTheSame(oldItem: FilterDataLocal, newItem: FilterDataLocal): Boolean {
43-
return oldItem == newItem
44-
}
45-
}
46-
}
4735
}

app/src/main/java/com/rivaldy/id/cocktail/ui/graphql/SampleGraphqlAdapter.kt

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ package com.rivaldy.id.cocktail.ui.graphql
22

33
import android.view.LayoutInflater
44
import android.view.ViewGroup
5-
import androidx.recyclerview.widget.DiffUtil
65
import androidx.recyclerview.widget.ListAdapter
76
import androidx.recyclerview.widget.RecyclerView
87
import com.bumptech.glide.Glide
98
import com.rivaldy.id.cocktail.R
109
import com.rivaldy.id.cocktail.databinding.RowItemCocktailBinding
1110
import com.rivaldy.id.core.CharacterListQuery
11+
import com.rivaldy.id.core.extensions.getDiffCallback
1212

1313
/**
1414
* Created by rivaldy on 05/01/22.
@@ -17,7 +17,7 @@ import com.rivaldy.id.core.CharacterListQuery
1717

1818
class SampleGraphqlAdapter(
1919
private val listener: (CharacterListQuery.Result) -> Unit
20-
) : ListAdapter<CharacterListQuery.Result, SampleGraphqlAdapter.ViewHolder>(DIFF_CALLBACK) {
20+
) : ListAdapter<CharacterListQuery.Result, SampleGraphqlAdapter.ViewHolder>(getDiffCallback()) {
2121

2222
inner class ViewHolder(private val binding: RowItemCocktailBinding) : RecyclerView.ViewHolder(binding.root) {
2323
fun bindItem(item: CharacterListQuery.Result) {
@@ -39,16 +39,4 @@ class SampleGraphqlAdapter(
3939
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
4040
holder.bindItem(getItem(position))
4141
}
42-
43-
companion object {
44-
private val DIFF_CALLBACK = object : DiffUtil.ItemCallback<CharacterListQuery.Result>() {
45-
override fun areItemsTheSame(oldItem: CharacterListQuery.Result, newItem: CharacterListQuery.Result): Boolean {
46-
return oldItem.name == newItem.name
47-
}
48-
49-
override fun areContentsTheSame(oldItem: CharacterListQuery.Result, newItem: CharacterListQuery.Result): Boolean {
50-
return oldItem == newItem
51-
}
52-
}
53-
}
5442
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.rivaldy.id.core.extensions
2+
3+
import android.annotation.SuppressLint
4+
import androidx.recyclerview.widget.DiffUtil
5+
6+
/** Created by github.com/im-o on 5/16/2023. */
7+
8+
fun <T : Any> getDiffCallback(): DiffUtil.ItemCallback<T> {
9+
return object : DiffUtil.ItemCallback<T>() {
10+
override fun areItemsTheSame(oldItem: T, newItem: T): Boolean {
11+
return oldItem == newItem
12+
}
13+
14+
@SuppressLint("DiffUtilEquals")
15+
override fun areContentsTheSame(oldItem: T, newItem: T): Boolean {
16+
return oldItem == newItem
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)