package es.tatvil.elfarodelperegrino; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.List; import java.util.Locale; public class AlbergueAdapter extends RecyclerView.Adapter { private List listaAlbergues; private double etapaLat, etapaLon; public AlbergueAdapter(List listaAlbergues, double etapaLat, double etapaLon) { this.listaAlbergues = listaAlbergues; this.etapaLat = etapaLat; this.etapaLon = etapaLon; } @NonNull @Override public AlbergueViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_albergue, parent, false); return new AlbergueViewHolder(view); } @Override public void onBindViewHolder(@NonNull AlbergueViewHolder holder, int position) { Albergue albergue = listaAlbergues.get(position); holder.tvNombre.setText(albergue.getNombre()); holder.tvTipo.setText("Tipo: " + albergue.getTipo()); holder.tvTelefono.setText("Tel: " + albergue.getTelefono()); float[] results = new float[1]; android.location.Location.distanceBetween(etapaLat, etapaLon, albergue.getLatitud(), albergue.getLongitud(), results); float distanciaKm = results[0] / 1000; holder.tvDistancia.setText(String.format(Locale.getDefault(), "A %.1f km del destino", distanciaKm)); } @Override public int getItemCount() { return listaAlbergues.size(); } public static class AlbergueViewHolder extends RecyclerView.ViewHolder { TextView tvNombre, tvTipo, tvDistancia, tvTelefono; public AlbergueViewHolder(@NonNull View itemView) { super(itemView); tvNombre = itemView.findViewById(R.id.tvAlbergueNombre); tvTipo = itemView.findViewById(R.id.tvAlbergueTipo); tvDistancia = itemView.findViewById(R.id.tvAlbergueDistancia); tvTelefono = itemView.findViewById(R.id.tvAlbergueTelefono); } } }