Ich habe Player-Klasse, die einen Namen und eine Arraylist von Partituren hat. Scores werden dynamisch mit einer Schaltfläche hinzugefügt. Ich möchte gemeinsame Einstellungen verwenden, um die Arraylist<Player> players
zu speichern, die ich in meiner Hauptaktivität erstellt habe. Ich habe ein paar Lösungen ohne Erfolg ausprobiert.Android Shared Einstellungen - Array-Liste der Klasse
Was habe ich versucht, so weit:
Links: Save ArrayList to SharedPreferences
Als ich ObjectSerializer Klasse habe ich Importpaket org.apache.pig.impl.util kippe; und dies bewirkt, dass Fehler wie bekommen:
weil WrappedIOException in diesem Paket ist.
Tinydb: Tiny db schien eine gute Lösung gemocht, aber ich bekomme Fehler, wenn ich meine Daten abrufen. Dies sind die Methoden, die ich aus der Java-Datei geändert:
public void putListObject(String key, ArrayList<Player> playerArray){
checkForNullKey(key);
Gson gson = new Gson();
ArrayList<String> playerStrings = new ArrayList<String>();
for(Player player : playerArray){
playerStrings.add(gson.toJson(player));
}
putListString(key, playerStrings);
}
public ArrayList<Player> getListObject(String key, Class<?> mClass) {
Gson gson = new Gson();
ArrayList<String> objStrings = getListString(key);
ArrayList<Player> objects = new ArrayList<Player>();
for (String jObjString : objStrings) {
Object value = gson.fromJson(jObjString, mClass);
objects.add((Player) value);
}
return objects;
}
public void putListObject(String key, ArrayList<Player> playerArray){
checkForNullKey(key);
Gson gson = new Gson();
ArrayList<String> playerStrings = new ArrayList<String>();
for(Player player : playerArray){
playerStrings.add(gson.toJson(player));
}
putListString(key, playerStrings);
}
Spielerklasse:
public class Player implements Serializable {
private String name;
private ArrayList<Integer> scores = new ArrayList<>();
public Player(String name){
this.name = name;
}
public ArrayList<Integer> getScores() {
return scores;
}
public void setScore(int score) {
scores.add(score);
}
Wenn jemand eine gute Lösung haben, wie zu speichern und retrive meine Spieler Arraylist bitte teilen
In Ihrer 'serialize' Methode entfernen Sie den roten linierten Code ... und Sie müssen auch wirklich nichts zurückgeben, damit Sie das auch loswerden können. – 3kings
Ich habe tinyDb nicht verwendet, aber wenn Sie die Fehler, die Sie damit haben, zeigen können, dann kann Ihnen wahrscheinlich jemand helfen. Das Speichern dieser Informationen in einer Datenbank wird wahrscheinlich auf lange Sicht die beste Lösung sein. – codeMagic
Die einfachste Lösung ist die Verwendung einer SQLite-Datenbank. große Daten auf gemeinsamen Vorlieben zu speichern ist nicht sehr gute Idee ..... – Opiatefuchs