Android: как хранить и извлекать данные Hashmap в общих настройках?

Я хочу сохранить некоторые данные, такие как пара ключей и значений, во внутренней памяти. поэтому я использую HashMap для хранения пары ключ-значение. Но у меня нет достаточного решения для хранения и извлечения этого HashMap в общие настройки. Пожалуйста, дайте мне какое-нибудь решение.

я помещаю свой код ниже:

HashMap<String, String> MapListMesasges = new HashMap<String, String>();
MapListMesasges.put(FromName, message.getBody());
preferences = mActivity.getSharedPreferences(
                                SharePreference_messages_history_name,
                                Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = preferences.edit();
                        for (Entry<String, String> entry : MapListMesasges
                                .entrySet()) {
                            editor.putString(entry.getKey(), entry.getValue());
                        }
                        editor.commit();

и получить данные из Sharedprefernces:

preferences = mActivity.getSharedPreferences(
                SharePreference_messages_history_name, Context.MODE_PRIVATE);
        for (Entry<String, ?> entry : preferences.getAll().entrySet()) {
            MapListMesasges.put(entry.getKey(), entry.getValue().toString());
        }

я также буду хранить хэш-карту в адаптере и устанавливать в список. Моя основная цель - хранить и извлекать данные в общие настройки, а также отображать данные в виде списка.

Заранее спасибо.


person dipali    schedule 08.08.2013    source источник
comment
Вы распечатываете данные в журнале? Получаете ли вы данные или нет?   -  person Shani Goriwal    schedule 08.08.2013
comment
В чем проблема? У вас есть нуль, когда вы извлекаете значения?   -  person Renan Bandeira    schedule 08.08.2013
comment
SharedPreferences не предназначены для такого использования. Однако вы можете использовать его таким образом, и код выглядит так, как будто он будет работать. Но вам следует подумать об использовании базы данных или чего-то еще, если у вас есть неопределенный набор ключей.   -  person zapl    schedule 08.08.2013
comment
я должен хранить эти данные во внутреннем хранилище. Поэтому я использую общие настройки. да, мне нужно получить значения. но я не знаю, как сохранить этот хэш-карту в списке.   -  person dipali    schedule 08.08.2013
comment
Передайте этот список hasmap вашему пользовательскому адаптеру в качестве параметров ... и установите для него свой список.   -  person Shani Goriwal    schedule 08.08.2013
comment
если вы правильно извлекаете свои данные в списке хэш-карт, тогда проще хранить данные с помощью списка.   -  person Shani Goriwal    schedule 08.08.2013
comment
@dipali .... я думаю, вы правильно получаете свои данные в списке ... не так ли ??   -  person Shani Goriwal    schedule 08.08.2013
comment
если у вас есть какие-либо вопросы, вы получите свое решение в чате, где вам посоветовали многие разработчики Android.   -  person Shani Goriwal    schedule 09.08.2013
comment
В любом месте, где вы очищаете данные из общих предпочтений перед установкой списка??   -  person Shani Goriwal    schedule 09.08.2013
comment
yes.i использовал простой массив с использованием метода getter/setter и сохранял данные в общих предпочтениях.   -  person dipali    schedule 09.08.2013
comment
[сохранение хэш-карты в общих настройках][1] [1]: stackoverflow.com/questions/7944601/   -  person Longwayto    schedule 17.12.2013
comment
Сериализуйте карту в Json и сохраните ее как простую строку. Плохая идея, но я думаю, что это сработает   -  person Javaluca    schedule 04.03.2015


Ответы (3)


Самый простой способ сохранить HashMap в настройках — просто преобразовать его в строку и сохранить.

С другой стороны, получите эту строку, преобразуйте ее в HashMap и наслаждайтесь.

Чтобы преобразовать строку в HashMap и наоборот, проверьте эту ссылку.

person Dhrumil Shah - dhuma1981    schedule 10.03.2015

Вы можете использовать json для решения.

Например:

**JSON**

    {
     [
      "name1","message1",
      "name2","message2"
     ]
    }

Сохраните всю эту строку json с некоторым ключом и используйте тот же ключ для извлечения. Просто вам нужно разобрать/создать JSON. Вы можете использовать GSON lib для создания/анализа JSON.

person Pratik Popat    schedule 10.03.2015