Android Serialisierung von Eigenen Objekten

kaoZ

Top Contributor
Hallöchen ich hab nur schnell eine frage zum deserialisieren von Objekte, und zwar speiche ich mehrere Serialisierte Objekte in eine Datei,

Wie kann ich diese dann wieder alle aus der Datei auslesen ?

das hier scheint nicht zu klappen , nach dem ersten deserialisieren wirft er direkt die exception ,

die Methode gibt mir eine Liste von Objekten zurück die Serializable implementieren, beim versuch in einer while schleife zu deserialisieren funzt nur das erste objekt, jemand eine idee?

Java:
public ArrayList<Serializable> load(){
		try {
			FileInputStream fis = new FileInputStream(getFile());
			ObjectInputStream ois = new ObjectInputStream(fis);
			
			Object item = null;
			ArrayList<Serializable> list = new ArrayList<Serializable>();
			
			while((item = ois.readObject()) != null){  // hier bin ich mir nicht sicher ob das so richtig ist
				list.add((Serializable) item);
			}
			ois.close();
			return list;
			
		} catch (Exception e) {
			return null;
		}
 
Zuletzt bearbeitet:

dzim

Top Contributor
Um die Frage schnell zu beantworten: Nein. Keinen blassen. Aber warum serialisierst du nicht mit GSon oder so? Liegen dann halt ein paar Textdateien herum, aber was soll's. Nur so als Hirnschiss am Abend...
 

kaoZ

Top Contributor
Naja ich könnte halt auch für jedes Objekt eine Datei erstellen, finde ich aber irgendwie unzweckmäßig , dachte mann könnte ähnlich dem BufferedReader mehrere Serialisierte Objekte aus einer Datei einlesen..

btw. was isn Gson xD :lol:
 

Frix

Mitglied
ArrayList und diverse anderen Klassen aus Collection sind von sich aus serialisierbar. Also die ganze Liste nehmen und serialisieren.

Java:
FileOutputStream outputStream = new FileOutputStream("persons.txt");
ObjectOutputStream oos= new ObjectOutputStream(outputStream);
oos.writeObject(persons);

FileInputStream inputStream = new FileInputStream("persons.txt");
ObjectInputStream ois= new ObjectInputStream(inputStream);

List<Person> list = (List<Person>) ois.readObject();

for (int i = 0; i < list.size(); i++) {
	System.out.println(list.get(i).toString());
}

Aus Streams schließen und try-catch Blöcken hab ich jetzt mal verzichtet.


PS:
In den meisten fällen würde ich aber auch gson (super simpel), JAXB, Sax oder was auch immer bevorzugen. Kommt natürlich aber ganz drauf an, was das Ziel ist.
 

kaoZ

Top Contributor
Also, das mit Arraylist hatte ich zuvor, War nicht das worauf ich hinaus wollte, ich habe mehrere Activitys, in 2 davon werden Werte berechnet und jeweils
Code:
onStop ();
in einem Objekt gespeichert und über die
Code:
save ();
Methode Serialisiert. Nun War mein Gedanke, die jeweiligen Werte der beiden Activitys, in EINE Datei zu Serialisieren, und in einer weiteren Activity mit der
Code:
load ();
Methode, alle Objekte dieser Datei einzulesen , in eine Arraylist zu steckenund dann dem Array Adapter zu übergeben.
 

kaoZ

Top Contributor
So wie es aussieht, werde ich es wohl doch wieder mir einer statischen Arraylist realisieren, jedoch werde ich diesmal zum Start der Main activity die Datei einlesen (insofern vorhanden), und in den berechnenden Activitys Einträge hinzufügen und beim verlassen
Code:
onStop ();
die Liste speichern, in der Übersicht lade ich dann lediglich die aktuelle statische Liste und lasse sie über den Adapter anzeigen, ich Glaube so sollte das klappen, gleich mal versuchen nachher :toll:
 

Ähnliche Java Themen

Neue Themen


Oben