0 votos

Hola. tengo un problema . Trato de con los dias de cada mes y que coincidan con los que yo he guardado en una base de datos cambiarles de aspecto en un calendario: para ello la variable "dias es un lists de los dias del mes.
y" separateTime" es an array con los dias guardados en la base de datos"bd, En la actualidad los dias guardados ,son (29,26,27,31, del 7-2015, 16-8-2015 y 13-9-2015).
Para ello creo un metodo" permisos" donde en teoria calcula las coincidencias que le paso del primer metodo "diasde trabajo" que le pasa los dias del mes.
Lo que ocurre es que solo cambia el ultimo dia 13-9.
No se como arregrarlo.
Los metodos son:

public List<String> diasdeTrabajo(){
			LocalDate hoy = LocalDate.now();
		 	LocalDate inicio = LocalDate.parse("2014-02-01");
		 	  boolean permiso;
		 	   for (int i = 0; i < dias.size(); i++) {
		 		  String dia1 = dias.get(i);
		 		  permiso= permisos(dia1);
		 		  if(permiso==true){
		 			 list.add(dias.get(i) + "-CAMBIO"); 
		 			 
		 		  }else{
				String[] dateArr = dias.get(i).split("-");  
				String diaa = dateArr[0];
				String mes = dateArr[1];
				String año = dateArr[2];
				int mess = Integer.parseInt(dateArr[1]) + 1;
				String messs = String.valueOf(mess);
				String diac = diaa + "-" + messs + "-" + año;

				DateTimeFormatter dtf = DateTimeFormat.forPattern("dd-MM-yyyy");
				LocalDate diasdeTrabajo = LocalDate.parse(diac, dtf);
				Days dia = Days.daysBetween(inicio, diasdeTrabajo);
				int days = dia.getDays();
				 int seg2 = days % 8;
		 	     if(seg2 == 1 || seg2 == 3) {
					 list.add(dias.get(i) + "-CURRO");
			    }else if (seg2 == 4){
					 list.add(dias.get(i) + "-CURRON");
			    } 
					  
			    else  {
					list.add(dias.get(i) + "-WHITE");
			    }
		 	     
		 	   }
		 	   }
		return list;
		}

y

public boolean permisos(String string){
     	   boolean permiso = false;
     	  DataBaseCambios bd= null;
     	  bd = new DataBaseCambios(_context);
     	 String[] separatedTime;
 	     String   diaPermiso="";
    	   diaPermiso = bd.diasPrmisos();
   	     separatedTime = diaPermiso.split(",");
   		    int numero = separatedTime.length;
   		    Vector<String> vector = new Vector<String>();
   		    for (int i = 0; i<numero;i++){
   		    	vector.add(separatedTime[i]);
   		    }
   		 ArrayList<String> al = new ArrayList<String>(vector);
   		 
   		 for(int i =0; i<numero;i++){
   			 
   			 if( string.equals(separatedTime[i])){
   				
   				permiso= true; 
   			 }else{
   				 permiso = false;
   			 }
   		 }
		return permiso;
		 
   			 }
		 

Gracias

por en Lenguajes de programación

1 Respuesta

0 votos

Volvemos a las andadas con las fechas tinodiez ;)

Por lo que puedo ver en la comparación del método permisos() podría estar el problema. Comprueba si efectivamente en separatedTime están guardándose todos Strings de las fechas que quieres comparar. Luego muestra por consola en la comparación del equals() si la variable string (que te recomiendo que cambies de nombre, pues podría ser un nombre reservado y de ahí el problema) el array recorrido de separatedTime es efectivamente lo mismo.

por
Hola. La aplicación está terminada, pero sigo trabajando en ella. Yo creo que no acabaré nunca. El problema creo que se resuelve cambiando el equals por el contains. Muchas gracias