Tesis 1.0.0
Loading...
Searching...
No Matches
ProductoAdapter.java
Go to the documentation of this file.
1package com.example.food_front.adapters;
2
3import android.view.LayoutInflater;
4import android.view.View;
5import android.view.ViewGroup;
6import android.widget.Button;
7import android.widget.ImageView;
8import android.widget.TextView;
9import androidx.annotation.NonNull;
10import androidx.recyclerview.widget.RecyclerView;
11import com.example.food_front.R;
12import com.example.food_front.models.Producto;
13import com.bumptech.glide.Glide;
14
15
16import java.util.List;
17
18public class ProductoAdapter extends RecyclerView.Adapter<ProductoAdapter.ProductoViewHolder> {
19
20 // Lista de productos
21 private List<Producto> listaProductos;
22
23
24 // Interfaz para manejar clics en el botón de agregar al carrito
25 public interface OnProductoClickListener {
27 }
28
29 // Listener que será implementado en el Fragment o Activity
30 private OnProductoClickListener listener;
31
32 // Constructor que recibe la lista de productos y el listener
33 public ProductoAdapter(List<Producto> listaProductos, OnProductoClickListener listener) {
34 this.listaProductos = listaProductos;
35 this.listener = listener;
36 }
37
38 @NonNull
39 @Override
40 // Infla el layout para cada ítem de la lista (crea la vista)
41 public ProductoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
42 View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_producto, parent, false);
43 return new ProductoViewHolder(view);
44 }
45
46 @Override
47 public void onBindViewHolder(@NonNull ProductoViewHolder holder, int position) {
48 // Obtener el producto actual
49 Producto producto = listaProductos.get(position);
50
51 // Asignar los valores a las vistas
52 holder.textViewNombre.setText(producto.getNombre());
53 holder.textViewDescripcion.setText(producto.getDescripcion());
54 holder.textViewPrecio.setText("$" + producto.getPrecio());
55
56 // Cargar la imagen con Glide
57 String imageUrl = producto.getImagenUrl();
58 if (imageUrl != null) {
59 Glide.with(holder.itemView.getContext())
60 .load(imageUrl)
61 .placeholder(R.drawable.placeholder) // Imagen por defecto mientras se carga
62 .error(R.drawable.error_image) // Imagen de error si no se carga
63 .into(holder.imageViewProducto); // Cargar en imageViewProducto
64 } else {
65 holder.imageViewProducto.setImageResource(R.drawable.placeholder); // Imagen predeterminada si no hay URL
66 }
67
68 // Configurar el clic del botón de "Agregar al Carrito"
69 holder.buttonAgregarCarrito.setOnClickListener(new View.OnClickListener() {
70 @Override
71 public void onClick(View v) {
72 // Llamar al listener para manejar el clic
73 if (listener != null) {
74 listener.onAgregarCarritoClick(producto);
75 }
76 }
77 });
78 }
79
80 // Devuelve el tamaño de la lista
81 @Override
82 public int getItemCount() {
83 return listaProductos.size();
84 }
85
86 // ViewHolder que almacena las referencias a los elementos del layout de cada ítem
87 static class ProductoViewHolder extends RecyclerView.ViewHolder {
88 ImageView imageViewProducto;
89 TextView textViewNombre;
90 TextView textViewDescripcion;
91 TextView textViewPrecio;
92 Button buttonAgregarCarrito; // Referencia al botón
93
94 public ProductoViewHolder(@NonNull View itemView) {
95 super(itemView);
96 imageViewProducto = itemView.findViewById(R.id.imageViewProducto);
97 textViewNombre = itemView.findViewById(R.id.textViewNombre);
98 textViewDescripcion = itemView.findViewById(R.id.textViewDescripcion);
99 textViewPrecio = itemView.findViewById(R.id.textViewPrecio);
100 buttonAgregarCarrito = itemView.findViewById(R.id.button_add_to_cart); // Inicializar el botón
101 }
102 }
103}
ProductoAdapter(List< Producto > listaProductos, OnProductoClickListener listener)
ProductoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
void onBindViewHolder(@NonNull ProductoViewHolder holder, int position)