【问题标题】:ArrayList Objects and SharedPreferences? [duplicate]ArrayList 对象和 SharedPreferences? [复制]
【发布时间】:2019-11-22 17:11:58
【问题描述】:

我有一个可以存储和显示事件的定制日历。我从网上的一个例子中得到了这个,他们使用 ArrayList 来存储数据/事件。

HomeCollection.date_collection_arr=new ArrayList<HomeCollection>();

每次 MainActivity 运行时,事件都会在“onCreate”中创建:

 HomeCollection.date_collection_arr.add( new HomeCollection("2017-07-08" ,"Diwali","Holiday","this is holiday"));

 HomeCollection.date_collection_arr.add( new HomeCollection("2017-07-09" ,"ABC","Holiday","this is holiday"));

“HomeCollection”类如下所示:

class HomeCollection {
    public String date="";
    public String name="";
    public String subject="";
    public String description="";


    public static ArrayList<HomeCollection> date_collection_arr;
    public HomeCollection(String date, String name, String subject, String description){

        this.date=date;
        this.name=name;
        this.subject=subject;
        this.description= description;

    }
}

我的问题是,不是每次应用启动时都创建事件,

HomeCollection.date_collection_arr.add( new HomeCollection("2017-07-08" ,"Holi","Holiday","this is holiday"));

,是否可以将“HomeCollection”对象保存并加载到 SavedPrefereces 或其他东西,以便用户可以在应用程序中添加和删除事件?这样的事情应该是可能的,但我该怎么做呢?有任何想法吗? :)

【问题讨论】:

  • SharedPreferences 只能存储原始类型。你可以用它来实现你想要做的事情,但是使用 SQLite 是更好的选择
  • @YunusKulyyev 不只是原始类型;您还可以存储String 值。不过,我同意这听起来更像是数据库的工作。
  • 使用TinyDB类,在谷歌上搜索

标签: java android


【解决方案1】:

最好存储在数据库中,但可以使用 Gson 将其存储为 json 项:

Gson

 fun storeHomeCollection(item: HomeCollection) {
        val gson = Gson()
        val json = gson.toJson(item)
        editor.putString("Key", json)
        editor.apply()
    }

并取回数据

fun getCollection(): HomeCollection? {
        var item = HomeCollection()
        val gson = Gson()
        val json = pr.getString("Key", "empty")
        if (json !== "empty") {
            item = gson.fromJson(json, HomeCollection::class.java)
        }

        return item
    }

【讨论】:

    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2015-05-02
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多