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