Общие настройки, загружающие несколько значений

В настоящее время я сохраняю имена пользователей и пароли в разных общих файлах настроек. Я хочу загрузить каждое значение, сохраненное в файле XML, а не только первое. Как бы это написать?


person Ferr0283    schedule 13.10.2016    source источник
comment
SharedPreferences.getAll() что это?   -  person nandsito    schedule 13.10.2016
comment
Чтобы скопировать файл, см.: stackoverflow.com/a/25585711/1815624   -  person CrandellWS    schedule 22.12.2016


Ответы (1)


Один из способов сделать это:

//if you are running the code inside from an Activity
Context context = this;
SharedPreferences userSharedPrefs = context.getSharedPreferences("USER_NAME_PREFS", MODE_PRIVATE);
SharedPreferences pwdSharedPrefs = context.getSharedPreferences("PWD_PREFS", MODE_PRIVATE);

Метод getAll() вернет структуру данных с именем HashMap, которая работает как словарь:

Для каждого сохраненного значения существует уникальный ключ.

примечание: получая их все сразу, вы как бы нарушаете цель этой структуры данных, но давайте продолжим

    Map<String, String> userNameHashMap = (Map<String, String>)userSharedPrefs.getAll();
    Map<String, String> pwdHashMap = (Map<String, String>)pwdSharedPrefs.getAll();

тогда можешь делать с ними что хочешь

хотите их в списке? (Кстати, я предполагаю, что ваши имена пользователей являются строками)

    List<String> userNameList = new LinkedList<>();
    userNameList.addAll(userNameHashMap.values());

хотите знать, есть ли пароль для пользователя john?

    boolean johnHasPasswd = pwdHashMap.containsKey("john");
    String johnsPass;

    if(johnHasPasswd)
        johnsPass = pwdHashMap.get("john");
person HenriqueMS    schedule 13.10.2016
comment
@ Ferr0283, ты смог решить свою проблему? Я считаю, что этот ответ должен быть помечен как правильный, дайте мне знать, если это помогло =) - person HenriqueMS; 17.10.2016