Я пытаюсь сохранить список пользовательских массивов для приложения, которое я создаю в Android-студиях.Мне нужно иметь возможность добавлять новые объекты в список всякий раз, когда пользователь нажимает кнопку.Мой подход заключается в том, чтобы сначала инициализировать пустую сериализованную версию списка массивов с правильным типом (catch из try / catch).Затем для десериализации этого массива в виде списка временных массивов с именем «RecoTrackGameCollection», затем добавьте новый объект, повторно выполните сериализацию массива и сохраните его.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь добавить какие-либо объекты в «RecoTrackGameCollection», код завершается ошибкой и запускает перехват.
Спасибо, что нашли время взглянуть на это.Если вам нужна дополнительная информация, пожалуйста, сообщите мне.
try {
//get shared pref
SharedPreferences prefs = mContext.getSharedPreferences("SavedGames", Context.MODE_PRIVATE);
//deserilize
Gson gson = new Gson();
String serialRecoverList = prefs.getString("SavedGames", "");
Log.wtf("String Recover", serialRecoverList);
Type type = new TypeToken<List<Game>>(){}.getType();
ArrayList<Game> RecoTrackGameCollection = gson.fromJson(serialRecoverList, type);
//add game
RecoTrackGameCollection.add(SearchGameCollection.get(position));
//reserilize
Gson NewGson = new Gson();
String JsonTrakingGames = NewGson.toJson(RecoTrackGameCollection);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("Games", JsonTrakingGames);
editor.commit();
Toast.makeText(mContext , "Game Saved", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Gson gson = new Gson();
String JsonTrakingGames = gson.toJson(TrackGameCollection);
SharedPreferences prefs = mContext.getSharedPreferences("SavedGames", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("Games", JsonTrakingGames);
editor.commit();
Toast.makeText(mContext , "iniatlizing", Toast.LENGTH_LONG).show();
}
Это класс Game
public class Game {
String name;
double price;
String link;
//constructor
Game(String name, double price,String link){
this.name = name;
this.price = price;
this.link = link;
}
}
Я считаю, что моя ошибка заключается в десерилизации массива.В частности это строка:
ArrayList<Game> RecoTrackGameCollection = gson.fromJson(serialRecoverList,
type);