Foros del Web » Programación para mayores de 30 ;) » Java »

Acceso a metodos de objetos dentro de arraylist

Estas en el tema de Acceso a metodos de objetos dentro de arraylist en el foro de Java en Foros del Web. Hola tengo una duda creo que fallo mio de concepto Al intentar acceder al metodo interno de un objeto perteneciente a un arraylist, si intento ...
  #1 (permalink)  
Antiguo 16/09/2013, 06:53
 
Fecha de Ingreso: septiembre-2009
Mensajes: 84
Antigüedad: 14 años, 8 meses
Puntos: 2
Acceso a metodos de objetos dentro de arraylist

Hola tengo una duda creo que fallo mio de concepto

Al intentar acceder al metodo interno de un objeto perteneciente a un arraylist, si intento acceder desde un array creado a partir de objetos creados como variable global los metodos funcionan pero si los objetos pertenecientes al arraylist han sido generados como variable local dentro de un metodo , esto me devuelven null

Cuando se llama a la clase si se ejecuta por primera vez lee el objeto que se le pasa en la constructora y escribe un documento xml con entradas mediante el arraylist que le paso como parametro al metodo

sin embargo si no es la primera vez que se ejecuta este primero lee el doc xml y crea dentro del metodo leer los objetos una vez leidos todos creo un arraylist de estos objetos y lo devuelvo

Cuando lo recibo añado el nuevo objeto al arraylist recibido y o mando al metodo de escribir, si embargo cuando leo la info de los objetos con los metodos get de cada objeto me devuelve un null

Este es el code

Código:
package com.asde.ipac;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.util.Xml;
import android.widget.Toast;

class AsyncLoadXML extends AsyncTask<Boolean, Integer, String> {

	private Context ctx;	
	private List<Pregunta> preguntas;
	private Pregunta pregunta;
	String TAG;

	public AsyncLoadXML(Context c, String g, String p, String r) {
		this.ctx = c;
		pregunta =new Pregunta();
		pregunta.setGrupo(g);
		pregunta.setPregunta(p);
		pregunta.setRespuesta(r);

	}

	@Override
	protected String doInBackground(Boolean... start) {
		String mens;
		if(!start[0]){
			try { preguntas = leerXML(ctx);
			Log.d(TAG, "\t" + "despues de leer" + " = " + preguntas.size());
			preguntas.add(this.pregunta);
			Log.d(TAG, "\t" + "despues de leer y añadir" + " = " + preguntas.size());} 
			catch (IOException e) { e.printStackTrace(); }
		}

		else {preguntas  = new ArrayList<Pregunta>();
		preguntas.add(this.pregunta);
		Log.d(TAG, "\t" + "inicial" + " = " + preguntas.size());}

		try { mens=escribirXML(ctx, preguntas); 
		Log.d(TAG, "11"+mens+"11");} 
		catch (IOException e) { e.printStackTrace(); }

		
		return "done";
	}
	protected void onPostExecute(String result) {
		if(!result.equals("")) 
			Toast.makeText(this.ctx, result, Toast.LENGTH_LONG).show();
	}



	public String escribirXML(Context ctx, List<Pregunta> preg) throws IOException{	
		FileOutputStream fout = null;

		try {
			fout = ctx.openFileOutput("answers.xml", Context.MODE_PRIVATE);
		} catch (FileNotFoundException e) {
			return e.getMessage();
			//			Toast.makeText(ctx, e.getMessage(), Toast.LENGTH_LONG).show();
		}
		Log.d(TAG, "entroEscribir");
		Log.d(TAG, "d"+preg.size()+"d");
		XmlSerializer serializer = Xml.newSerializer();
		try {
			serializer.setOutput(fout, "UTF-8");
			serializer.startDocument(null, true);
			serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);

			serializer.startTag(null, "preguntas");
			Log.d(TAG, "aqui1");

			for( int pr=0; pr<preg.size(); pr++){

				Log.d(TAG, "aqui2");
				
				serializer.startTag(null, "pregunta");
				Log.d(TAG, "a3");
				serializer.attribute(null,"grupo" , preg.get(pr).getGrupo().toString());
				Log.d(TAG, "a4");
				serializer.attribute(null,"pregunta" ,  preg.get(pr).getPregunta().toString());
				Log.d(TAG, "a5");
				serializer.text( preg.get(pr).getRespuesta().toString());
				Log.d(TAG, "a6");
				Log.d(TAG, "leyendo " +   preg.get(pr).getGrupo().toString() + " " +   preg.get(pr).getPregunta().toString());
				serializer.endTag(null, "pregunta");
			}

			serializer.endTag(null, "preguntas");


			serializer.endDocument();
			serializer.flush();
			fout.close();
			return "done";
			//			Toast.makeText(ctx, "Escrito correctamente", Toast.LENGTH_LONG).show();
		} catch (Exception e) {
			Log.d(TAG, "e"+e.getMessage()+"e");
			return e.getMessage();
			//			Toast.makeText(ctx, e.getMessage(), Toast.LENGTH_LONG).show();
		}
		
		
	}





	public List<Pregunta> leerXML(Context ctx) throws IOException{	
		FileInputStream fin = null;
		List<Pregunta> preguntasleidas= new ArrayList<Pregunta>();
		Pregunta preguntaleida =new Pregunta();
		
		try {
			fin = ctx.openFileInput("answers.xml");
		} catch (Exception e) {
			Toast.makeText(ctx,  e.getMessage() + " h1", Toast.LENGTH_LONG).show();
		}
		Log.d(TAG, "entroLeer");
		XmlPullParser parser = Xml.newPullParser();
		try {
			parser.setInput(fin, "UTF-8");
			
			int event = parser.next();
			while(event != XmlPullParser.END_DOCUMENT) {

				if(event == XmlPullParser.START_TAG) {
					Log.d(TAG, "< 222 " + parser.getName() + ">");

				

					for(int i = 0; i < parser.getAttributeCount(); i++) {

						if(parser.getAttributeName(i) == "grupo") preguntaleida.setGrupo(parser.getAttributeValue(i).toString());
						else if(parser.getAttributeName(i) == "pregunta") preguntaleida.setPregunta(parser.getAttributeValue(i).toString());
						Log.d(TAG, "\t HO2" + parser.getAttributeName(i) + " = " + parser.getAttributeValue(i));
					}
					//					}
				}

				if(event == XmlPullParser.TEXT && parser.getText().trim().length() != 0)
				{preguntaleida.setRespuesta(parser.getText().toString());
				Log.d(TAG, "\t\t HO3" + parser.getText());
				preguntasleidas.add(preguntaleida);
				}


				if((event == XmlPullParser.END_TAG))
				{
					Log.d(TAG, "</" +"HO4 "+ parser.getName() + ">");}


				event = parser.next();
			}
			fin.close();

			//Toast.makeText(ctx, "Leido correctamente", Toast.LENGTH_LONG).show();//a�adir al final del archivo
		} catch (Exception e) {
			//			Toast.makeText(ctx, e.getMessage() + " h2", Toast.LENGTH_LONG).show();
			e.printStackTrace();
		}
		return preguntasleidas;
	}

}

Etiquetas: arraylist, clase, html, metodo, metodos, objetos, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:45.