私はPlayerクラスに名前とスコアのarraylistを持っています。スコアはボタンで動的に追加されます。共有環境設定を使用して、主なアクティビティで作成したArraylist<Player> players
を保存します。私は成功していないいくつかのソリューションを試しました。Androidの共有設定 - クラスの配列リスト
リンク::私がこれまで試したどのような
Save ArrayList to SharedPreferences
私はObjectSerializerクラスを使用する場合、私は、インポートパッケージorg.apache.pig.impl.utilを傾けます。 WrappedIOExceptionは、そのパッケージにあるため
:これは、以下のようなエラーが出るようになります。
Tinydb: Tiny dbは良い解決策が好きでしたが、データを取得するとエラーが発生します。
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);
}
プレーヤークラス:
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);
}
誰もが私のプレイヤーのArrayListを格納しretriveする方法についての良い解決策を持っている場合は
'serialize'メソッドでは、赤い線で囲まれたコードを取り除きます。また、あなたは本当にそれを取り除くことができるように何かを返す必要はありません。 – 3kings
私はtinyDbを使用していませんが、エラーが表示されたら、誰かがあなたを助けることができます。この情報をdbに格納することは、おそらく長期的には最良の解決策になるでしょう。 – codeMagic
最も簡単な解決策は、sqliteデータベースを使用することです。あなたは共有の設定に大きなデータを格納することは非常に良い考えではありません..... – Opiatefuchs