我正在研究一个我必须在该术语的内部处理的项目(在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();
}
}