java - Android 共享首选项 - 类的数组列表

标签 java android class arraylist sharedpreferences

我有 Player 类,它有一个名称和一个分数数组列表。通过按钮动态添加分数。我想使用共享首选项来保存Arraylist<Player> players这是我在主要 Activity 中创建的。我尝试了几种解决方案但没有成功。

到目前为止我尝试过的:

链接: Save ArrayList to SharedPreferences

当我使用 ObjectSerializer 类时,我无法导入包 org.apache.pig.impl.util;这会导致出现如下错误:

enter image description here

因为 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/

相关文章:

java - vector 和垃圾收集器

java - 更改类变量类型

android - 将 SQLite 数据库导入 Android 模拟器

c# - C# 中的 Selenium WebDriver - "By"类扩展

java - 在 Groovy 中重新加载类

java - 以编程方式在 java 类中查找文字

java - Spring - 将键/值 xml 文件读入 Map

Android SYSTEM_ALERT_WINDOW 权限在 list 中删除后仍然显示

android - 如何使用 Intent 发送多个附件

c++ - C++子类构造函数被忽略