import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.RatingBar
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
class RecipeAdapter(
private var recipeList: List<RecipeItem>,
private val onItemClick: (RecipeItem) -> Unit
) : RecyclerView.Adapter<RecipeAdapter.RecipeViewHolder>() {
class RecipeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val image: ImageView = itemView.findViewById(R.id.ivRecipeImage)
val title: TextView = itemView.findViewById(R.id.tvRecipeTitle)
val subtitle: TextView = itemView.findViewById(R.id.tvRecipeSubtitle)
val calories: TextView = itemView.findViewById(R.id.tvRecipeCalories)
val rating: RatingBar = itemView.findViewById(R.id.rbRecipeRating)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecipeViewHolder {
// Подключаем наш отдельный XML-файл карточки
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_recipe, parent, false)
return RecipeViewHolder(view)
}
override fun onBindViewHolder(holder: RecipeViewHolder, position: Int) {
val item = recipeList[position]
// Карточка заполняется данными автоматически
holder.title.text = item.title
holder.subtitle.text = item.description
holder.calories.text = "${item.calories} ккал"
holder.rating.rating = item.rating
holder.image.setImageResource(item.imageResId)
// Клик по карточке для перехода к подробному описанию/видео
holder.itemView.setOnClickListener {
onItemClick(item)
}
}
override fun getItemCount(): Int = recipeList.size
// Метод для обновления списка при поиске или фильтрации
fun updateData(newList: List<RecipeItem>) {
recipeList = newList
notifyDataSetChanged()
}
}