2017-02-14 8 views
0

Сохранение данных осуществляется, но я не в состоянии восстановить данные, которые он, показываяAndroid Sharedpreferance сохранение массива список выпуск

java.util.HashSet не может быть приведен к java.lang.String

Вот мой код. (Сохранить)

    List<String> historyList = new ArrayList<>(); 
        historyList.add(data.get(position).getProductName()); 
        Set<String> set = new HashSet<>(); 
        set.addAll(historyList); 
        preference.save("History", set); 

(Получить)

Log.d("History", "hhhhhhhhhhhhhhhhh" +preference.readString("History","")); 

Пожалуйста, помогите мне решить эту проблему.

ответ

-1

Поскольку вы спасая Set вам нужно получить Set вместо String и вы можете преобразовать его в List снова.

Set<String> set = preference.getStringSet("History", null); 
List<String> historyList = new ArrayList<>(); 
historyList.addAll(set); 
+0

Могу ли я знать, почему это проголосовало –

+0

Код только ответы не очень хорошие. Лучше добавить объяснение, сопровождающее ваш код. – Micho

+0

@Micho Отредактировано ответ –

0

После того, как вы подготовили ArrayList из всех элементов, преобразуйте их в разделенную запятыми строку.

String itemsString = TextUtils.join(",", historyList); 
preference.save("History", itemsString); 

Когда вы его извлечете, преобразуйте обратно в массив.

String [] itemsArray = preference.readString("History","").split(","); 
0

Получить значение

Gson gson = new Gson(); 
String jsonText = Prefs.getString("key", null); 
String[] text = gson.fromJson(jsonText, String[].class); //EDIT: gso to gson 

Установите значения

Gson gson = new Gson(); 
List<String> historyList = new ArrayList<>(); 
historyList.addAll(data); 
String jsonText = gson.toJson(historyList); 
prefsEditor.putString("key", jsonText); 
prefsEditor.commit(); 
0

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

Сначала преобразуйте массив в строку, используя Gson.

ArrayList<CustomObject> yourlist=new ArrayList<>(); 
public static final String MY_PREFS_NAME = "MyPrefsFile"; 

Заполните ваш массив

Gson gson=new Gson(); 
String myfav = gson.toJson(yourlist); 

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); 
editor.putString("myfav", myfav); 
editor.commit(); 

Тогда прочитайте эту строку, в которой вам нужно это

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE); 
String restoredText = prefs.getString("myfav", null); 

Теперь вернемся ваш список массив в следующим образом:

Type type = new TypeToken<ArrayList<CustomObject>>() { }.getType(); 
     ArrayList<CustomObject> yourfinallist=new ArrayList<>(); 
     gson = new Gson(); 
     yourfinallist = gson.fromJson(myfav, type);