Simplify RecipesPagingAdapter creation
This commit is contained in:
@@ -21,7 +21,6 @@ import gq.kirmanak.mealient.extensions.refreshRequestFlow
|
|||||||
import gq.kirmanak.mealient.extensions.showLongToast
|
import gq.kirmanak.mealient.extensions.showLongToast
|
||||||
import gq.kirmanak.mealient.logging.Logger
|
import gq.kirmanak.mealient.logging.Logger
|
||||||
import gq.kirmanak.mealient.ui.activity.MainActivityViewModel
|
import gq.kirmanak.mealient.ui.activity.MainActivityViewModel
|
||||||
import gq.kirmanak.mealient.ui.recipes.images.RecipeImageLoader
|
|
||||||
import gq.kirmanak.mealient.ui.recipes.images.RecipePreloaderFactory
|
import gq.kirmanak.mealient.ui.recipes.images.RecipePreloaderFactory
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -36,9 +35,6 @@ class RecipesFragment : Fragment(R.layout.fragment_recipes) {
|
|||||||
@Inject
|
@Inject
|
||||||
lateinit var logger: Logger
|
lateinit var logger: Logger
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var recipeImageLoader: RecipeImageLoader
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var recipePagingAdapterFactory: RecipesPagingAdapter.Factory
|
lateinit var recipePagingAdapterFactory: RecipesPagingAdapter.Factory
|
||||||
|
|
||||||
@@ -66,9 +62,7 @@ class RecipesFragment : Fragment(R.layout.fragment_recipes) {
|
|||||||
private fun setupRecipeAdapter() {
|
private fun setupRecipeAdapter() {
|
||||||
logger.v { "setupRecipeAdapter() called" }
|
logger.v { "setupRecipeAdapter() called" }
|
||||||
|
|
||||||
val recipesAdapter = recipePagingAdapterFactory.build(
|
val recipesAdapter = recipePagingAdapterFactory.build { navigateToRecipeInfo(it) }
|
||||||
recipeImageLoader = recipeImageLoader, clickListener = ::navigateToRecipeInfo
|
|
||||||
)
|
|
||||||
|
|
||||||
with(binding.recipes) {
|
with(binding.recipes) {
|
||||||
adapter = recipesAdapter
|
adapter = recipesAdapter
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import android.view.LayoutInflater
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.paging.PagingDataAdapter
|
import androidx.paging.PagingDataAdapter
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
|
import dagger.hilt.android.scopes.FragmentScoped
|
||||||
import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity
|
import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity
|
||||||
import gq.kirmanak.mealient.databinding.ViewHolderRecipeBinding
|
import gq.kirmanak.mealient.databinding.ViewHolderRecipeBinding
|
||||||
import gq.kirmanak.mealient.logging.Logger
|
import gq.kirmanak.mealient.logging.Logger
|
||||||
import gq.kirmanak.mealient.ui.recipes.images.RecipeImageLoader
|
import gq.kirmanak.mealient.ui.recipes.images.RecipeImageLoader
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
|
||||||
|
|
||||||
class RecipesPagingAdapter private constructor(
|
class RecipesPagingAdapter private constructor(
|
||||||
private val logger: Logger,
|
private val logger: Logger,
|
||||||
@@ -18,19 +18,23 @@ class RecipesPagingAdapter private constructor(
|
|||||||
private val clickListener: (RecipeSummaryEntity) -> Unit
|
private val clickListener: (RecipeSummaryEntity) -> Unit
|
||||||
) : PagingDataAdapter<RecipeSummaryEntity, RecipeViewHolder>(RecipeDiffCallback) {
|
) : PagingDataAdapter<RecipeSummaryEntity, RecipeViewHolder>(RecipeDiffCallback) {
|
||||||
|
|
||||||
@Singleton
|
@FragmentScoped
|
||||||
class Factory @Inject constructor(
|
class Factory @Inject constructor(
|
||||||
private val logger: Logger,
|
private val logger: Logger,
|
||||||
private val recipeViewHolderFactory: RecipeViewHolder.Factory,
|
private val recipeViewHolderFactory: RecipeViewHolder.Factory,
|
||||||
|
private val recipeImageLoader: RecipeImageLoader,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun build(
|
fun build(clickListener: (RecipeSummaryEntity) -> Unit) = RecipesPagingAdapter(
|
||||||
recipeImageLoader: RecipeImageLoader,
|
logger,
|
||||||
clickListener: (RecipeSummaryEntity) -> Unit,
|
recipeImageLoader,
|
||||||
) = RecipesPagingAdapter(logger, recipeImageLoader, recipeViewHolderFactory, clickListener)
|
recipeViewHolderFactory,
|
||||||
|
clickListener
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: RecipeViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: RecipeViewHolder, position: Int) {
|
||||||
|
logger.d { "onBindViewHolder() called with: holder = $holder, position = $position" }
|
||||||
val item = getItem(position)
|
val item = getItem(position)
|
||||||
holder.bind(item)
|
holder.bind(item)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user