序列化Android Project中的对象arrayList

时间:2013-11-28 23:08:26

标签: android listview serialization arraylist

我正在研究一个我必须在该术语的内部处理的项目(在10天内在西班牙)。我无法序列化对象的arrayList。 我有这个类课程,我创建了这个类的对象,并将它们放入一个arrayList。我将序列化arrayList(这发生在VistaPrevia活动中)。

在活动ListadoCV中,我对arrayList进行反序列化,用它加载ListView。

如果我在ListadoCV活动中手动创建对象,将它们添加到arrayList,然后用它们加载ListView,ListView工作正常。另一方面,当我对ListadoCV活动中的VistaPrevia活动中序列化的arrayList进行反序列化时,ListView根本不显示任何内容。 这就是让我觉得问题在序列化时诞生的原因。

我在过去3天里花了20多个小时试图解决这个问题,阅读教程和论坛,但无法弄清楚如何解决它。我有一个去年制作的java类,它在java项目中运行良好,但它在android中似乎不起作用......

课程类别

    package com.dam204.trabajoevaluacion;

    import java.io.Serializable;

    public class Curriculum implements Serializable {
/**
 * 
 */
private static final long serialVersionUID = -1520731881414914436L;
/**
 * 
 */
// DATOS PERSONALES
String nombre;
String apellido1;
String apellido2;
String dni;
String email;
String direccion;
int cp;
String localidad;
String provincia;

// DATOS ACADÉMICOS
String titulacion;

// EXPERIENCIA LABORAL
String experiencia;

// IMAGEN
int logotipo;

public Curriculum(String nombre, String apellido1, String apellido2,
        String dni, String email, String direccion, int cp,
        String localidad, String provincia, String titulacion,
        String experiencia, int logotipo) {
    this.nombre = nombre;
    this.apellido1 = apellido1;
    this.apellido2 = apellido2;
    this.dni = dni;
    this.email = email;
    this.direccion = direccion;
    this.cp = cp;
    this.localidad = localidad;
    this.provincia = provincia;
    this.titulacion = titulacion;
    this.experiencia = experiencia;
    this.logotipo = logotipo;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public String getApellido1() {
    return apellido1;
}

public void setApellido1(String apellido1) {
    this.apellido1 = apellido1;
}

public String getApellido2() {
    return apellido2;
}

public void setApellido2(String apellido2) {
    this.apellido2 = apellido2;
}

public String getDni() {
    return dni;
}

public void setDni(String dni) {
    this.dni = dni;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getDireccion() {
    return direccion;
}

public void setDireccion(String direccion) {
    this.direccion = direccion;
}

public int getCp() {
    return cp;
}

public void setCp(int cp) {
    this.cp = cp;
}

public String getLocalidad() {
    return localidad;
}

public void setLocalidad(String localidad) {
    this.localidad = localidad;
}

public String getProvincia() {
    return provincia;
}

public void setProvincia(String provincia) {
    this.provincia = provincia;
}

public String getTitulacion() {
    return titulacion;
}

public void setTitulacion(String titulacion) {
    this.titulacion = titulacion;
}

public String getExperiencia() {
    return experiencia;
}

public void setExperiencia(String experiencia) {
    this.experiencia = experiencia;
}

public int getLogotipo() {
    return logotipo;
}

public void setLogotipo(int logotipo) {
    this.logotipo = logotipo;
}


}

GuardarCargarObjetos CLASS(序列化CLASS)

    package com.dam204.trabajoevaluacion;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.OptionalDataException;
    import java.io.StreamCorruptedException;
    import java.util.ArrayList;

    import android.content.Context;

    public class GuardarCargarObjetos {

static String filename = "CVsGuardados.dat";

public static void Serializa(Context context, ArrayList<Curriculum> a) {

    FileOutputStream fos;
    try {
        //fos = context.getApplicationContext().openFileOutput(filename, Context.MODE_PRIVATE);
        fos = context.openFileOutput(filename, Context.MODE_PRIVATE);

        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(a);
        oos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static ArrayList<Curriculum> Desserializa(Context context) {
    FileInputStream fin;
    ArrayList<Curriculum> afromfile = null;

    try {
        fin = context.openFileInput(filename);
        ObjectInputStream ois = new ObjectInputStream(fin);
        afromfile = (ArrayList<Curriculum>) ois.readObject();
        ois.close();
    } catch (StreamCorruptedException e) {
        e.printStackTrace();
    } catch (OptionalDataException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return afromfile;

}

}

ListadoCV ACTIVITY

    package com.dam204.trabajoevaluacion;

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.ArrayList;

    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.Menu;

    public class ListadoCV extends ListActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listadocv);

    // CREAMOS LA LISTA Y COMPROBAMOS SI EXISTE EL ARCHIVO, SI EXISTE LO
    // CARGAMOS

    ArrayList<Curriculum> curriculums = new ArrayList<Curriculum>();

    String filename = "CVsGuardados.dat";
    File fichero = new File(filename);
    if(fichero.exists()){
        curriculums = GuardarCargarObjetos.Desserializa(getApplicationContext());
    }


      /*String sFichero = "CVs_guardados.dat";
      File fichero = new File(sFichero);
      if (fichero.exists()) {

        try {
            curriculums = Serializador.cargarCVs();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          } */   


     /* curriculums.add(new Curriculum("pepe", "fernandez", "martinez",
      "53169968-v", "manuelcanadas@gmail.com", "sdgsdgsd", 234235,
      "sdfsdfd", "sdgsdgds", "sdfgsdgsdg", "dfgdfgdfgdf",
      android.R.drawable.ic_dialog_info));

      curriculums.add(new Curriculum("mario", "perez", "sanchez",
      "34546576-x", "madnufelcganhadjas@hotmail.com", "sdgsdgsd", 287656,
      "sdfsdfd", "sdgsdgds", "sdfgsdgsdg",
      "dfgdfhhtgdfbhfdhhttegbrtgdfgdf",
      android.R.drawable.ic_dialog_info));*/


    Adaptador adaptador = new Adaptador(ListadoCV.this, curriculums);
    setListAdapter(adaptador);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.listado_cv, menu);
    return true;
}

    }

VistaPrevia ACTIVITY

    package com.dam204.trabajoevaluacion;

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.ArrayList;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;

    public class VistaPrevia extends Activity {

TextView tv_titulo_previa, tv_nombre_completo, tv_dni, tv_email,
        tv_direccion, tv_cp, tv_localidad, tv_provincia, tv_titulacion,
        tv_experiencia;

String nombre, apellido1, apellido2, dni, email, direccion, localidad,
        provincia, titulacion, experiencia;
int cp;

String nombre_completo;

Button confirmar, reiniciar;

ArrayList<Curriculum> lista;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.vistaprevia);

    // CREAMOS LA LISTA Y COMPROBAMOS SI EXISTE EL ARCHIVO, SI EXISTE LO
    // CARGAMOS
    /*lista = new ArrayList<Curriculum>();
    String sFichero = "CVs_guardados.dat";
    File fichero = new File(sFichero);
    if (fichero.exists()) {
        try {
            // lista1 = Serializador.cargarCVs();
            lista = Serializador.cargarCVs();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }*/
    lista = new ArrayList<Curriculum>();
    String filename = "CVsGuardados.dat";
    File fichero = new File(filename);
    if(fichero.exists()){
        lista = GuardarCargarObjetos.Desserializa(getApplicationContext());
    }

    // RECOGEMOS LOS DATOS ENVIADOS DESDE LA ACTIVIDAD ANTERIOR
    Bundle extras = getIntent().getExtras();
    nombre = extras.getString("nombre");
    apellido1 = extras.getString("apellido1");
    apellido2 = extras.getString("apellido2");
    dni = extras.getString("dni");
    email = extras.getString("email");
    direccion = extras.getString("direccion");
    cp = extras.getInt("cp");
    localidad = extras.getString("localidad");
    provincia = extras.getString("provincia");
    titulacion = extras.getString("titulacion");
    experiencia = extras.getString("experiencia");

    // ASIGNAMOS LOS DATOS RECIBIDOS DESDE LA ACTIVIDAD ANTERIOR A LOS
    // TextView DE ESTA ACTIVIDAD
    tv_titulo_previa = (TextView) findViewById(R.id.tv_titulo_previa);
    tv_titulo_previa.setText("CV de " + nombre + " " + apellido1);

    tv_nombre_completo = (TextView) findViewById(R.id.tv_nombre_completo);
    nombre_completo = apellido1 + " " + apellido2 + ", " + nombre;
    tv_nombre_completo.setText(nombre_completo);

    tv_dni = (TextView) findViewById(R.id.tv_dni);
    tv_dni.setText(dni);

    tv_email = (TextView) findViewById(R.id.tv_email);
    tv_email.setText(email);

    tv_direccion = (TextView) findViewById(R.id.tv_direccion);
    tv_direccion.setText(direccion);

    tv_cp = (TextView) findViewById(R.id.tv_cp);
    tv_cp.setText(Integer.toString(cp));

    tv_localidad = (TextView) findViewById(R.id.tv_localidad);
    tv_localidad.setText(localidad);

    tv_provincia = (TextView) findViewById(R.id.tv_provincia);
    tv_provincia.setText(provincia);

    tv_titulacion = (TextView) findViewById(R.id.tv_titulacion);
    tv_titulacion.setText(titulacion);

    tv_experiencia = (TextView) findViewById(R.id.tv_experiencia);
    tv_experiencia.setText(experiencia);

    // LINKAMOS LOS BOTONES DEL XML CON EL JAVA
    confirmar = (Button) findViewById(R.id.btn_confirmar);
    reiniciar = (Button) findViewById(R.id.btn_reiniciar);

    // BOTON CONFIRMAR
    confirmar.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            // implementar la creacion del objeto de la clase Curriculum
            // implementar que se añada el objeto a la lista
            // implementar la serializacion de la lista de objetos

            Curriculum nuevoCV = new Curriculum(nombre, apellido1,
                    apellido2, dni, email, direccion, cp, localidad,
                    provincia, titulacion, experiencia, android.R.drawable.ic_dialog_info);

            // lista1.agregarCurriculum(nuevoCV);
            lista.add(nuevoCV);

            // Serializador.guardarCVs(lista1);
            //Serializador.guardarCVs(lista);
            GuardarCargarObjetos.Serializa(getApplicationContext(), lista);

            Intent intent = new Intent(VistaPrevia.this, Principal.class);
            startActivity(intent);
            finish();

        }
    });

    // BOTON REINICIAR
    reiniciar.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent intent = new Intent(VistaPrevia.this, CrearCV.class);

            startActivity(intent);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.vista_previa, menu);
    return true;
}

// SI LA ACTIVIDAD ENTRA EN PAUSA (NOS MOVEMOS A OTRA ACTIVIDAD), LA
// ACTIVIDAD ACTUAL SE CIERRA
@Override
protected void onPause() {
    super.onPause();
    finish();
}

    }

0 个答案:

没有答案