mirror of
https://github.com/melihaksoy/Android-Kotlin-Modulerized-CleanArchitecture.git
synced 2026-03-11 21:11:59 +01:00
Separated diffutil callback creation from adapter
This commit is contained in:
@@ -25,8 +25,4 @@ fun <T> Fragment.observe(data: LiveData<T>, block: (T) -> Unit) {
|
||||
inline fun <reified T : ViewModel> ViewModelProvider.Factory.createFor(
|
||||
fragment: Fragment,
|
||||
crossinline block: T.() -> Unit = {}
|
||||
): T {
|
||||
val viewModel = ViewModelProviders.of(fragment, this)[T::class.java]
|
||||
viewModel.apply(block)
|
||||
return viewModel
|
||||
}
|
||||
): T = ViewModelProviders.of(fragment, this)[T::class.java].apply(block)
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.melih.core.extensions
|
||||
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
|
||||
/**
|
||||
* Get [diff callback][DiffUtil.ItemCallback] for given type based on provided checker
|
||||
*/
|
||||
fun <T> getDiffCallbackForType(itemCheck: (oldItem: T, newItem: T) -> Boolean) = object : DiffUtil.ItemCallback<T>() {
|
||||
override fun areItemsTheSame(oldItem: T, newItem: T): Boolean =
|
||||
itemCheck(oldItem, newItem)
|
||||
|
||||
override fun areContentsTheSame(oldItem: T, newItem: T): Boolean =
|
||||
itemCheck(oldItem, newItem)
|
||||
}
|
||||
@@ -2,21 +2,14 @@ package com.melih.list.ui.adapters
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import com.melih.core.base.recycler.BasePagingListAdapter
|
||||
import com.melih.core.base.recycler.BaseViewHolder
|
||||
import com.melih.core.extensions.getDiffCallbackForType
|
||||
import com.melih.list.databinding.LaunchRowBinding
|
||||
import com.melih.repository.entities.LaunchEntity
|
||||
|
||||
class LaunchesAdapter(itemClickListener: (LaunchEntity) -> Unit) : BasePagingListAdapter<LaunchEntity>(
|
||||
object : DiffUtil.ItemCallback<LaunchEntity>() {
|
||||
override fun areItemsTheSame(oldItem: LaunchEntity, newItem: LaunchEntity): Boolean =
|
||||
oldItem.id == newItem.id
|
||||
|
||||
override fun areContentsTheSame(oldItem: LaunchEntity, newItem: LaunchEntity): Boolean =
|
||||
oldItem.name == newItem.name
|
||||
|
||||
},
|
||||
getDiffCallbackForType { oldItem, newItem -> oldItem.id == newItem.id },
|
||||
itemClickListener
|
||||
) {
|
||||
override fun createViewHolder(
|
||||
|
||||
Reference in New Issue
Block a user