La razón por la que esto no funciona es simplemente porque el segundo argumento de Log.v
es un String
no es un File[]
. Java aplica estrictamente tipos de argumentos.
actualización:
Usted puede transformar fácilmente la información contenida File
un objeto en un objeto String
. Todos los objetos java implementan un toString()
, que si recuerdo correctamente devuelve una combinación del ClassName
y el address
del objeto está ubicado. Sin embargo, esto generalmente no contiene información útil. Por lo tanto, debe definir la conversión usted mismo.
Ahora convertir de File[]
a String
es más complicado ya que cuando se llama a un método en una matriz funciona en el objeto de matriz en lugar de a los miembros de una matriz (que contiene la información Sospecho que te importa). Entonces, al llamar al mp3List.toString()
se devolverá una sola cadena que describa el objeto de la matriz y no la información contenida en la matriz.
Así que es probable que desee escribir un método como este:
String fileArrayToString(File[] f){
String output = "";
String delimiter = "\n" // Can be new line \n tab \t etc...
for (int i=0; i<f.length; i++)
{
output = output + f[i].getPath() + delimiter;
}
return output;
}
Y entonces llamada que hace el registro de llamadas de la siguiente manera:
Log.v("MyTag", fileArraytoString(mp3List);
Sin embargo, esto podría ser difícil de leer.
yo personalmente lo haría así:
for (int i=0; i<mp3List.legnth; i++)
Log.v("MyTag", Integer.toString(i) + ":" + mp3List[i].getPath());
Su más simples, produce mensajes de registro más limpia y es más fácil de entender lo que está pasando como programador.
concatenación de cadenas se debe hacer uso de un StringBuilder. Usar + = crea un nuevo objeto de cadena para cada iteración porque las cadenas son inmutables. – Jivings
@Jivings hasta la rodilla en C# .. :) gracias .. –
No hay problema, aún así le he votado positivamente por la respuesta :) – Jivings