PDA

Ver la Versión Completa : [ CONSULTA ] No entra en el bucle for?


timonoj
07/05/12, 09:16:32
A ver, estoy tratando de hacer una descarga recursiva de las imágenes de una web. Como no he visto ejemplo similar, me lo he hecho yo a mi manera: Parseo las urls de archivos de imagen en mi array de strings imageUrls[].
Tengo el siguiente código:

Log.i("MiApp","imageUrls length: " +imageUrls.length);

for (int i=0; i==imageUrls.length; i++){
file=null;

//filename:
StringBuilder sb = new StringBuilder(imageUrls[i]);
int j = sb.lastIndexOf("/");
String filename = sb.substring(j+1);
Log.i("MiApp","Downloading filename " +filename.toString());
file= new File(dirPics, filename);
Download(address, file);

}
-sb.lastIndexOf("/") lo tengo para que bautice el nombre de archivo tras el último "/" de la dirección, lo que sería el nombre del archivo como sale en la url.
-dirPics es un file con la dirección en la memoria SD para imágenes

-El procedimiento Download, obviamente, descarga lo que se le pasa en el string address al archivo file.

Aclarado esto, pongo mi duda: El caso es que estoy volviéndome loco. Lo que yo creo entender es que no entra en el loop :/
Antes de entrar en el bucle, arroja en el log tan feliz "imageUrls length: 33", vamos, que el array tiene 33 direcciones para bajar, y por tanto el loop debería de repetirse 33 veces. Y ahí se queda. El proceso finaliza, sin sacar nada más por el log. La app no casca. Del código escrito, veis que haya planteado mal el bucle for? Gracias!

monchyrcg
07/05/12, 10:33:00
No entra en el loop, por que lo tienes mal formado, creas la variable i=0 y luego para entrar en el loop preguntas si es igual al length (i==imageUrls.length) al no serlo (dices que es 33) pues no entra. Entinedes? Sería algo así:

Log.i("MiApp","imageUrls length: " +imageUrls.length);

for (int i=0; i<=imageUrls.length; i++){
file=null;

//filename:
StringBuilder sb = new StringBuilder(imageUrls[i]);
int j = sb.lastIndexOf("/");
String filename = sb.substring(j+1);
Log.i("MiApp","Downloading filename " +filename.toString());
file= new File(dirPics, filename);
Download(address, file);

}

timonoj
07/05/12, 10:37:29
No entra en el loop, por que lo tienes mal formado, creas la variable i=0 y luego para entrar en el loop preguntas si es igual al length (i==imageUrls.length) al no serlo (dices que es 33) pues no entra. Entinedes? Sería algo así:

Log.i("MiApp","imageUrls length: " +imageUrls.length);

for (int i=0; i<=imageUrls.length; i++){
file=null;

//filename:
StringBuilder sb = new StringBuilder(imageUrls[i]);
int j = sb.lastIndexOf("/");
String filename = sb.substring(j+1);
Log.i("MiApp","Downloading filename " +filename.toString());
file= new File(dirPics, filename);
Download(address, file);

}



Si seré gañán...Me pasa por pasarme años sin picar código. Eso que dicen de que es como pedalear en bici es MENTIRA!!
En fin. He cambiado el == por <= y obviamente ha tirado. Me he comido como 50 errores de una sentada, pero ya ha entrado al bucle, está claro. Muchísimas gracias!