【问题标题】:How do I update a sharedpreference variable in this way?如何以这种方式更新 sharedpreference 变量?
【发布时间】:2014-10-18 08:03:29
【问题描述】:

我有一个 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

我该怎么做?

先谢谢你了。

【问题讨论】:

  • 你试过了吗?把它放在这里。
  • 不,我什么都没试过。正因为如此,我才提出这个问题。

标签: android sharedpreferences


【解决方案1】:

您可以使用这样的解决方法:

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
}

我希望这会有所帮助!

【讨论】:

  • 但是这段代码不会更新循环内的 sharedpreference 。我想使用上面发布的第二个选项更新密钥名称。
【解决方案2】:
SharedPreferences.Editor editor = getSharedPreferences(PREFS_NAME, 0).edit();

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

editor.commit();

【讨论】:

  • 请添加一些解释性文字以使其成为更有用的答案 - 谢谢。
【解决方案3】:

我做了以下解决方法。不知道有没有其他更快的方法:

            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 变量,最后我将从之前填写的列表中获得的所有值放入空的 sharedpreferences 中。

【讨论】:

    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多