package es.tatvil.elfarodelperegrino; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import java.util.List; public class EtapaAdapter extends RecyclerView.Adapter { private List listaEtapas; public EtapaAdapter(List listaEtapas) { this.listaEtapas = listaEtapas; } @NonNull @Override public EtapaViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_etapa, parent, false); return new EtapaViewHolder(view); } @Override public void onBindViewHolder(@NonNull EtapaViewHolder holder, int position) { Etapa etapa = listaEtapas.get(position); String titulo = (position + 1) + ". " + etapa.getOrigen() + " - " + etapa.getDestino(); holder.tvNombre.setText(titulo); holder.tvDistancia.setText(etapa.getDistancia() + " km"); Glide.with(holder.itemView.getContext()) .load(etapa.getImagenUrl()) .placeholder(android.R.drawable.ic_menu_gallery) .into(holder.ivMiniatura); holder.itemView.setOnClickListener(v -> { Intent intent = new Intent(v.getContext(), DetalleEtapaActivity.class); intent.putExtra("etapa", etapa); v.getContext().startActivity(intent); }); } @Override public int getItemCount() { return listaEtapas.size(); } // El ViewHolder es el "molde" para los elementos de la vista public static class EtapaViewHolder extends RecyclerView.ViewHolder { TextView tvNombre, tvDistancia; ImageView ivMiniatura; public EtapaViewHolder(@NonNull View itemView) { super(itemView); tvNombre = itemView.findViewById(R.id.tvNombreEtapa); tvDistancia = itemView.findViewById(R.id.tvDistancia); ivMiniatura = itemView.findViewById(R.id.ivEtapaMiniatura); } } }