2014-10-18 55 views
-2

我有值的sharedpreference VAR这样的:如何以这种方式更新sharedpreference变量?

key0,value 
key1,value 
key3,value 
key5,value 
key6,value 
key7,value 
key10,value 

我想要做的就是得到一个新的sharedpreference值与项目排序顺序这样的:

key0,value 
key1,value 
key2,value 
key3,value 
key4,value 
key5,value 
key6,value 

如何做到这一点?

谢谢您的高级。

+0

你尝试过什么吗?把这个放在这里。 – Rustam 2014-10-18 08:09:22

+0

不,我没有尝试任何东西。是因为我提出了这个问题。 – Levimatt 2014-10-18 08:11:02

回答

0

您可以使用一种变通方法是这样的:

SharedPreferences shp = context.getSharedPreferences("yourSHP", MODE_PRIVATE); 

//begin & end are to integers. For your case: 0 and 6 to get form key0 to key6 
for(int i=begin;i<=end;i++){ 
String value = shp.getString("key"+i, "defaultValue"); 
//.....Here you can do whatever you want with your values 
} 

我希望这将有助于!

+0

但是这段代码不会更新循环内的sharedpreference。我想用我在上面发布的第二个选项更新密钥名称。 – Levimatt 2014-10-18 08:48:51

0
SharedPreferences.Editor editor = getSharedPreferences(PREFS_NAME, 0).edit(); 

for(Entry<String, String> entry : testMap.entrySet()) 
    editor.putString(entry.getKey(), entry.getValue()); 

editor.commit(); 
+0

请添加一些说明文字,使其成为更有用的答案 - 谢谢。 – 2014-10-18 08:59:51

0

我做了以下解决方法。我不知道是否有另一种更快的方式来做到这一点:

  SharedPreferences shpTH = mContext.getSharedPreferences("PrefsTH", ListadoImagenesSubidasMain.MODE_PRIVATE); 
      Map<String,?> keysTH = shpTH.getAll(); 

      List<String> imgTH = new ArrayList<String>(); 
      for(Map.Entry<String,?> entry : keysTH.entrySet()){ 
        imgTH.add(entry.getValue().toString());   
      } 

      SharedPreferences newPrefsTH = mContext.getSharedPreferences("PrefsTH", ListadoImagenesSubidasMain.MODE_PRIVATE); 
      newPrefsTH.edit().clear().commit(); 

      int contTH = 0; 
      for(String item : imgTH){ 
       SharedPreferences.Editor editorTH = newPrefsTH.edit(); 
       editorTH.putString("urlTH" + contTH, item); 
       editorTH.commit(); 
       contTH++; 
      } 

首先,我将所有的值复制到列表。然后我清空sharedpreferences var,最后我把所有从先前填充的列表中获得的值放在空的sharedpreferences中。

相关问题