【问题标题】:Store Arraylist in sharedPreferences [duplicate]在 sharedPreferences 中存储 Arraylist [重复]
【发布时间】:2016-01-07 04:57:07
【问题描述】:

我正在开发一个复杂的应用程序,该应用程序检索与网站不同的数据。不幸的是,我遇到了一个问题。我从显示在列表视图中的 html 表中检索数据。这不是问题,但是当我打开活动时,需要一段时间来检索所有内容并显示它。解决此问题的一个解决方案是将数据放在 SharedPreferences 中。在这种情况下,数据应该只被检索一次。因此数据应该存储在 SharedPreferences 中,当您重新打开活动时,应该显示 html 数据而无需等待。在这种情况下,我无法弄清楚如何实现 SharedPreferences。

我希望有人能够帮助我。

这是检索数据的代码:

ListView Onderdelen = (ListView) findViewById(R.id.Onderdelen);
                    ClubkampioenschappenOnderdelenHTMLRequest clucka = new ClubkampioenschappenOnderdelenHTMLRequest(list, ClubkampioenschappenSingleenDubbelOnderdelen.this, Onderdelen);
                    clucka.execute();

包含所有数据的数组列表称为:list。

【问题讨论】:

标签: java android listview arraylist sharedpreferences


【解决方案1】:

使用这个对象 --> TinyDB--Android-Shared-Preferences-Turbo 非常简单。

TinyDB tinydb = new TinyDB(context);

tinydb.putList("MyUsers", mUsersArray);

得到

tinydb.getList("MyUsers");

【讨论】:

    【解决方案2】:

    //设置值

    Set<String> set = new HashSet<String>();
    set.addAll(mArrayList1);
    scoreEditor.putStringSet("key", set);
    scoreEditor.commit();
    

    //检索值

    Set<String> set = new HashSet<String>();
    set = myScores.getStringSet("key", null);
    
    public void addTask(Task t) {
        if (null == currentTasks) {
            currentTasks = new ArrayList<task>();
        }
        currentTasks.add(t);
    
        //save the task list to preference
        SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
        Editor editor = prefs.edit();
        try {
            editor.putString(TASKS, ObjectSerializer.serialize(currentTasks));
        } catch (IOException e) {
            e.printStackTrace();
        }
        editor.commit();
    }
    public void onCreate() {
        super.onCreate();
        if (null == currentTasks) {
            currentTasks = new ArrayList<task>();
        }
    
        //      load tasks from preference
        SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
    
        try {
            currentTasks = (ArrayList<task>) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<task>())));
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    

    【讨论】:

    • 因为Set会失去订单,我更喜欢Json解决方案
    • 你能解释一下我应该在我的应用程序中工作吗
    猜你喜欢
    • 2017-03-19
    • 2018-06-13
    • 2015-02-22
    • 1970-01-01
    • 2015-02-13
    • 2013-09-11
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多