PDA

Ver la Versión Completa : Mostrar un recurso raw en un listview


Cristofer2006
23/08/13, 17:35:24
Hola estoy intentando crear una lista con cada linea de un txt guardado como recurso raw, el problema esta en que el bucle while solo lee la primera linea del archivo, copio el código a continuacion:

int indice=0;
String linea;
TextView tv1;
ListView lv1;
String[] datos=new String[1];

tv1=(TextView)findViewById(R.id.textView1);
Bundle bundle = getIntent().getExtras();
String autor = bundle.getString("autor");
int resource = getResources().getIdentifier(autor, "raw", "proyec.to1");

try
{
InputStream fraw = getResources().openRawResource(resource);
BufferedReader brin = new BufferedReader(new InputStreamReader(fraw));

while((linea = brin.readLine()) != null){
datos[indice]=linea;
indice=indice+1;
tv1.setText(linea);
}

lv1=(ListView)findViewById(R.id.listView1);
lv1.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, datos));

fraw.close();
}
catch (Exception ex)
{
Log.e("Ficheros", "Error al leer fichero.");
}

Haber si alguien me puede ayudar, saludos cordiales y gracias de antemano

kriogeN
23/08/13, 19:01:53
String[] datos=new String[1];

Lo raro es que no te de excepción cuando intenta escribir en datos[1]

Cristofer2006
23/08/13, 19:13:53
Me corre la aplicación perfectamente, solo que lee solamente la primera linea del archivo txt, soy nuevo en android, vengo de php :risitas:

Entonces puede tener que ver con el array? He mirado como crear un array pero en ningún sitio sale como hacerlo sin especificar el numero de registros que tendrá

Saludos

kriogeN
23/08/13, 20:09:14
Puedes crear un ArrayList e ir añadiendo Strings con add.

De todas formas la primera prueba que deberías hacer es poner el String con una dimensión de 2, a ver si te lo coge (que no debería, si no estaría dando excepción). Porque si no lo coge lo más probable es que el fichero esté en un formato incorrecto y no interpreta bien los saltos de línea.

Cristofer2006
23/08/13, 20:13:26
Si pongo una dimensión de 2 se me cuelga cuando el archivo tiene dos lineas pero no cuando tiene mas, de todas formas si me lo lee, si pongo solo:

while((linea = brin.readLine()) != null){
tv1.setText(linea);
}

tv1 muestra la ultima frase del archivo, pero no si lo guardo en el array, lo mismo sera eso, voy a mirar con un ArrayList haber que pasa

Cristofer2006
23/08/13, 23:31:18
Funciona a la perfección usando ArrayList, muchas gracias

copio el código por si a alguien le puede servir:


int indice=0;
String linea;
TextView tv1;
ListView lv1;
ArrayList<String> datos=new ArrayList<String>();

Bundle bundle = getIntent().getExtras();
String autor = bundle.getString("autor");
int resource = getResources().getIdentifier(autor, "raw", "proyec.to1");

try
{
InputStream fraw = getResources().openRawResource(resource);
BufferedReader brin = new BufferedReader(new InputStreamReader(fraw));

while((linea = brin.readLine()) != null){
datos.add(linea);
}

lv1=(ListView)findViewById(R.id.listView1);
lv1.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, datos));

fraw.close();
}
catch (Exception ex)
{
Log.e("Ficheros", "Error al leer fichero.");
}


Saludos cordiales