2014-10-08 18 views
0

我在我的应用程序中拥有sharedpreference中的值。我有类似的项目获取具有来自sharedpreference的模式的项目

itemH1 
item1 
itemH2 
item2 
itemH3 
item3 

我怎样才能得到像itemHX这样的项目?

+0

这只是一个值吗?与空格分开? – 2014-10-08 15:31:51

+0

我想要获得带有关键模式的所有项目itemH – Levimatt 2014-10-08 15:35:35

+0

并且您知道使用关键项目h有多少项目吗?如果是这样执行。否则,你必须得到所有设置并逐一比较 – 2014-10-08 15:36:36

回答

0

如果它们都存储在一个单一的喜好文件,那么你几乎仅限于使用SharedPreferences.getAll()并遍历通过映射条目寻找钥匙匹配你的格局。

另一个选择是制作一个不同的首选项文件(使用Context.getSharedPreferences(fileName, Context.MODE_PRIVATE)作为特殊项目(在你的例子中是H),这样你就可以读取该文件中的所有关键字,而不必检查

+0

这是一个解决方案,但如果我需要同时使用两个sharedpreference文件,我该怎么办?显示适配器在列表视图中放置值(还使用AsyncTask在列表视图中显示图像)? – Levimatt 2014-10-08 15:51:36

+0

如果我们有一些想法知道你正在存储什么样的数据以及你打算如何使用它,你可能会得到更好的建议。我不确定我喜欢使用SharedPreferences来支持ListView适配器。我更愿意允许封装每个项目的数据,但在这里您使用的是两个或多个共享首选项,除了键名称之间的某些相似之外,这些共享首选项不以任何方式链接。 – Karakuri 2014-10-08 19:51:24

2

您必须迭代所有共享首选项并逐个比较它们是否与您的模式匹配。

SharedPreferences sharedPref = ctx.getSharedPreferences(AppSettings.PREFERENCES_FILE, Context.MODE_PRIVATE); 
     Map<String, ?> allEntries = sharedPref.getAll(); 
     for (Map.Entry<String, ?> entry : allEntries.entrySet()) { 
      if(entry.getKey().contains("itemH")) //you can use startsWith too 
       Log.d("itemH found", entry.getKey() + ": " + entry.getValue().toString()); 
     } 
相关问题