예제 #1
0
  @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);
  }
예제 #2
0
  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;
  }