Android sharedpreferences进入arraylist

Android sharedpreferences进入arraylist,第1张

概述我创建了一个简单的游戏.最后,用户的姓名和分数应该进入高分列表.为此,我想将这些数据存储在sharedpreferences中.我看到了一个帖子,并且试图将其应用到我的应用程序中,但是它强制关闭.我什至不知道这是否是我在做的正确的事情.因此,我将这些密钥对(玩家,得分)放入了一个arraylist.

我创建了一个简单的游戏.最后,用户的姓名和分数应该进入高分列表.为此,我想将这些数据存储在sharedpreferences中.我看到了一个帖子,并且试图将其应用到我的应用程序中,但是它强制关闭.我什至不知道这是否是我在做的正确的事情.因此,我将这些密钥对(玩家,得分)放入了一个arrayList.从那里,我可以将值输入到列表视图中.
这只是一个例子.

SharedPreferences.Editor scoreEditor = myscores.edit();        scoreEditor.putString("PLAYER", "Thomas");        scoreEditor.putString("score", "5");        scoreEditor.commit();        final ArrayList<HashMap<String,String>> List = new ArrayList<HashMap<String,String>>();        Map<String, ?> items = myscores.getAll();        for(String s : items.keySet()){            HashMap<String,String> hmap = new HashMap<String,String>();            hmap.put("PLAYER", s);            hmap.put("score", items.get(s).toString());            List.add(hmap);        }        Toast.makeText(Start.this, "List size: "+List.size(), Toast.LENGTH_LONG).show();

对我来说,如果我像这样存储这些数据也可以:

scoreEditor.putString("DATA", "Thomas" + "-" + "5");

并将其放入ArrayList< String> List =新的ArrayList< String>();

但我不知道该怎么做.

你们能帮我吗?

编辑:所以我可以按照Hapazar的建议走另一条路.我把这段代码放在一起,但是我不知道这是否是这样做的方法.我还没有测试过,因为sg的sharedpreferences是错误的,我仍在设法弄清楚.

SharedPreferences.Editor scoreEditor = myscores.edit();scoreEditor.putString("DATA", "Thomas" + "-" + "5");scoreEditor.commit();HashSet<String> hset=new HashSet<String>();hset.addAll((Collection<? extends String>) myscores.getAll());ArrayList<String> List = new ArrayList<String>(hset);

解决方法:

SharedPreferences编辑器不接受列表,但接受Sets.您可以将列表转换为HashSet或类似的东西,然后像这样存储它.当您读回它时,将其转换为ArrayList,如果需要对其进行排序,您就可以开始了.

请注意,集合必须是一组字符串,因此您必须坚持使用“ Thomas”“-”“ 5”设置.

编辑:对于您的新更新,我在想更多类似的东西

//RetrIEve the valuesSet<String> set = new HashSet<String>();set = myscores.getStringSet("key", null);//Set the valuesSet<String> set = new HashSet<String>();set.addAll(listofExistingscores);scoreEditor.putStringSet("key", set);scoreEditor.commit();

该代码未经测试,但应该可以工作

编辑:如果您的API级别低于get / setStringSet()级别,则可以尝试以下 *** 作:

1)将高分列表变成带分隔符的字符串.这意味着,如果您有[“ Tom,1”,“ Ed,5”],则可以遍历它并将其转换为类似于“ Tom,1 | Ed,5”的字符串.您可以使用setString(..)轻松存储它.

2)当您想读回值时,执行getString(..),然后执行String.split(“ |”)以获取原始列表.好吧,它返回一个数组,但是可以很容易地将其转换为列表.

总结

以上是内存溢出为你收集整理的Android sharedpreferences进入arraylist全部内容,希望文章能够帮你解决Android sharedpreferences进入arraylist所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1071235.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存