我有 Player 类,它有一个名称和一个分数数组列表。通过按钮动态添加分数。我想使用共享首选项来保存Arraylist<Player> players
这是我在主要 Activity 中创建的。我尝试了几种解决方案但没有成功。
到目前为止我尝试过的:
链接: Save ArrayList to SharedPreferences
当我使用 ObjectSerializer 类时,我无法导入包 org.apache.pig.impl.util;这会导致出现如下错误:
因为 WrappedIOException 位于该包中。
Tinydb : 小型数据库似乎是一个很好的解决方案,但当我检索数据时出现错误。这些是我从java文件中更改的方法:
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);
}
如果有人对如何存储和检索我的播放器数组列表有好的解决方案,请分享
最佳答案
在保存到共享首选项之前,请尝试将对象转换为 JSON。 GSON 是一个快速且易于使用的工具。
关于java - Android 共享首选项 - 类的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599867/