как хранить и извлекать (ключ, значение) вид данных, используя сохраненные настройки Android - PullRequest
3 голосов
/ 16 ноября 2011

У меня есть таблица хеш-карт, как показано ниже,

HashMap<String, String> backUpCurency_values = new HashMap<String, String>();

и я хочу сохранить эти значения для будущего использования .. как я могу это сделать?

Edit:
я буду хранить названия стран и валюты в качестве пары ключ-значение ...

Ответы [ 5 ]

6 голосов
/ 16 ноября 2011

Вы должны просто использовать цикл for-each и перебирать карту следующим образом:

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

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

editor.commit();

Затем, когда вам нужно вернуть значения для дальнейшего использования, вы делаете следующее (при условии, что этот объект SharedPreference зарезервирован для валюты):

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);

for( Entry<String, ?> entry : prefs.getAll().entrySet() ) 
  backUpCurency_values.put( entry.getKey(), entry.getValue().toString() );
1 голос
/ 16 ноября 2011

Есть несколько разных подходов к этому. Не имея ничего более, чем информация, которую вы хотите сохранить в HashMap для SharedPreferences, я могу только делать предположения.

Первое, что я хотел бы спросить, будете ли вы хранить другие вещи в SharedPreferences - я подумаю, что вы это сделаете.

Вот как бы я подошел к этому:

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("backUpCurency", stringify(backUpCurency_values));
    editor.commit();

Вы можете посмотреть, что делает stringify:

   // turns a HashMap<String, String> into "key=value|key=value|key=value"
   private String stringify(HashMap<String, String> map) {
       StringBuilder sb = new StringBuilder();
       for (String key : map.keySet()) {
           sb.append(key).append("=").append(map.get(key)).append("|");
       }
       return sb.substring(0, sb.length() - 1); // this may be -2, but write a unit test
   }

Затем вы можете просто проанализировать эту строку с известной структурой после прочтения общих настроек позже.

   private HashMap<String, String> restoreIt() {
      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
      String backup = settings.getString("backUpCurency", "");
      HashMap<String, String> map = new HashMap<String, String>();
      for (String pairs : backup.split("|")) {
         String[] indiv = pairs.split("=");
         map.put(indiv[0], indiv[1]);
      }
      return map;
   }
1 голос
/ 16 ноября 2011

Вы можете использовать SharedPreferences.

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

//The below step you can repeat to put all the key value pair from the hashmap to the shared preference

editor.putString("Key", Value);

// Commit the edits!
editor.commit();

А для извлечения позже используйте

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getString(<Key>, <defaultvalue>);
0 голосов
/ 16 ноября 2011

Для хранения значений используйте этот код

SharedPreferences preferences = getSharedPreferences(
            PREF_FILE_NAME, MODE_PRIVATE);
    if (value.equals("")) {

        boolean storedPreference = preferences.contains(key);
        if (storedPreference) {
            SharedPreferences.Editor editor = preferences.edit();
            editor.remove(key); // value to store
            Log.d("KEY",key);
            editor.commit();
        }
    }else{

        SharedPreferences.Editor editor = preferences.edit();
        editor.putString(key, value); // value to store
        Log.d("KEY",key);
        editor.commit();
    }

Для получения значений используйте этот код

SharedPreferences preferences = getSharedPreferences(
            PREF_FILE_NAME, MODE_PRIVATE);
    Map<String, String> map = (Map<String, String>) preferences.getAll();
    if(!map.isEmpty()){
        Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
        while(iterator.hasNext()){
             Map.Entry pairs = (Map.Entry)iterator.next();
                pairs.getKey()+pairs.getValue();
                      //write code here
        }
    }
0 голосов
/ 16 ноября 2011

Вы можете использовать SharedPreference следующим образом:

SharedPreferences s_pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Editor edit=s_pref.edit();

edit.putString("key","value");
edit.commit();

позже вы можете использовать его следующим образом:

String s=s_pref.getString("key","default value");

Но вы должны иметь список ключей, с которыми вы сохранили значения, вSharedPreferences, чтобы вы могли легко получить значения во время их получения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...