如何以这种方式更新共享首选变量?

时间:2014-10-18 08:03:30

标签: android sharedpreferences

我有一个共享首选项var,其值如下:

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

我该怎么做?

先谢谢你。

3 个答案:

答案 0 :(得分: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
}

我希望这会有所帮助!!

答案 1 :(得分:0)

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

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

editor.commit();

答案 2 :(得分: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中。