@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camino_nuevo); this.usuarioSeleccionado = (Usuario) getIntent().getSerializableExtra("usuarioSeleccionado"); Log.d(ActivityCaminoNuevo.CAMINO_NUEVO, this.usuarioSeleccionado.toString()); ArrayList<String> nombresListaParadas = new ArrayList<String>(); Iterator<Parada> itr = GestionFicherosConfigs.listaParadasCaminoFrances.iterator(); while (itr.hasNext()) { Parada parada = itr.next(); nombresListaParadas.add(parada.getNombre()); } ArrayAdapter adaptador = new ArrayAdapter<String>( this, R.layout.support_simple_spinner_dropdown_item, nombresListaParadas); Spinner spinnerInicio = (Spinner) findViewById(R.id.spinnerParadaInicio); spinnerInicio.setAdapter(adaptador); }
public ArrayList<Etapa> crearEtapasCaminoNuevo( int dias, String paradaComienzo, String nombreCamino, int kmMax) { ArrayList<Etapa> listaEtapas = new ArrayList<Etapa>(); ArrayList<Integer> listaParadasEtapa = new ArrayList<Integer>(); Double distancia = 0.0; int ordenParada = 1; int ordenEtapa = 1; boolean semaforo = true; boolean inicio = false; Iterator<Parada> itr = GestionFicherosConfigs.listaParadasCaminoFrances.iterator(); Parada parada = null; // Nos situamos en el inicio del camino while (itr.hasNext() && !inicio) { parada = itr.next(); if (parada.getNombre().equals(paradaComienzo)) { ordenParada = parada.getOrden(); inicio = true; } } // Mientras queden dias o no se alcance la ciudad final while (dias > 0) { semaforo = true; while (semaforo) { if (GestionFicherosConfigs.listaParadasCaminoFrances.get(ordenParada).getDistSiguiente() + distancia <= kmMax) { listaParadasEtapa.add(ordenParada); distancia += GestionFicherosConfigs.listaParadasCaminoFrances.get(ordenParada).getDistSiguiente(); if (ordenParada == GestionFicherosConfigs.listaParadasCaminoFrances.size() - 1) { dias = 0; distancia = 9999.0; ordenParada--; } else { ordenParada++; } } else { // Si en la parada final no hay sitio donde dormir hacemos backtracking hasta la // parada mas cercana que sí tenga alojamientos. while (!GestionFicherosConfigs.listaParadasCaminoFrances .get(listaParadasEtapa.get(listaParadasEtapa.size() - 1)) .getHotel() && !GestionFicherosConfigs.listaParadasCaminoFrances .get(listaParadasEtapa.get(listaParadasEtapa.size() - 1)) .getAlbergue()) { distancia -= GestionFicherosConfigs.listaParadasCaminoFrances.get(ordenParada).getDistAnterior(); listaParadasEtapa.remove(listaParadasEtapa.size() - 1); ordenParada--; } listaEtapas.add(new Etapa(ordenEtapa, listaParadasEtapa)); listaParadasEtapa.clear(); ordenEtapa++; ordenParada--; distancia = 0.0; dias--; semaforo = false; } } } return listaEtapas; }