el-faro-del-peregrino/app/src/main/java/es/tatvil/elfarodelperegrino/AlbergueAdapter.java

62 lines
2.2 KiB
Java

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<AlbergueAdapter.AlbergueViewHolder> {
private List<Albergue> listaAlbergues;
private double etapaLat, etapaLon;
public AlbergueAdapter(List<Albergue> 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);
}
}
}