Das ist mein Sparprogramm-Code wird dies die Partitur, das Datum und den Spielernamen auf der Rangliste speichern:Speichern und Abrufen von Arraylist zu SharedPreferences
mLeaderboardlist = new ArrayList<>();
Leaderboardmodel s = new Leaderboardmodel();
s.setDate("07/24/17");
s.setName(player.getText().toString());
s.setScore(Integer.parseInt(String.valueOf(yourScore.getText())));
Tab1Normal.mLeaderboardlist.add(s);
SharedPreferences appSharedPrefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor prefsEditor = appSharedPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(s);
prefsEditor.putString("MyObject", json);
prefsEditor.apply();
prefsEditor.commit();
Und das ist mein retrieving Programmcode auch den Umgang in sharedpreference:
SharedPreferences appSharedPrefs = PreferenceManager
.getDefaultSharedPreferences(this.getActivity().getApplicationContext());
Gson gson = new Gson();
String json = appSharedPrefs.getString("MyObject", "");
Type type = new TypeToken<ArrayList<Leaderboardmodel>>(){}.getType();
ArrayList<Leaderboardmodel> leaderboard= gson.fromJson(json, type);
Collections.sort(leaderboard);
adapter = new ListLeaderBoardAdapter(getActivity(), leaderboard);
lvLeaderboardlist.setAdapter(adapter);
der sparen Teil der Arbeit Bußgelder Spar aber das Abrufen Teil einen Fehler an und macht den Absturz der Anwendung, die Fehleranzeige:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Erwartete BEGIN_ARRAY aber war in Zeile 1 Spalte 2 Pfad
$
Haben Sie versucht, einen Haltepunkt auf 'String json = appSharedPrefs.getString (" MyObject "," ");', um zu sehen, was es da ist ..? – AsfK
was soll ich tun, mein Herr? – Luffy
überprüfen Sie JSON Kontakt mit Android-Debugger (verwenden Sie die Debug ..) Siehe diesen Link: https://developer.android.com/studio/debug/index.html – AsfK