Форум программистов, компьютерный форум CyberForum.ru

Как поместить в preferences arrayList типа: arraylist<Class> - Android

Восстановить пароль Регистрация
 
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
23.02.2014, 01:39     Как поместить в preferences arrayList типа: arraylist<Class> #1
Как поместить в preferences arrayList типа: arraylist<Class>

Class содержит вид:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class CountryClass {
    private String countryName;
    private int countryFlag;
    
    public CityInfo(String cName, int flagImage)
    {
        countryName = cName;
        countryFlag = flagImage;
    }
    public String getCountryName()
    {
        return countryName;
    }
    public int getCountryFlag()
    {
        return countryFlag;
    }
    public String toString()
    {
        return countryName;
    }
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 01:39     Как поместить в preferences arrayList типа: arraylist<Class>
Посмотрите здесь:

Android Сохранение arraylist<class> в памяти устройства
Android Как в ArrayList найти значение?
Как добавить в ArrayList массив из ресурсов? Android
ArrayList Android
ArrayList Android
Android Работа с ArrayList
Android Фильтрация ArrayList
Как связать ArrayList, ListView и AsynkTask? Android
Android. Как сохранить ArrayList<String> в файл Android
Android ArrayList contains object
Android Работа с ArrayList
Как сохранить ArrayList Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
23.02.2014, 12:59     Как поместить в preferences arrayList типа: arraylist<Class> #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Stylish2013, если принципиально в preferences, проще всего использовать конвертацию, например в JSON.
Как это выглядит.
Сначала немного модифицируем класс-модель, добавив методы toJSON и статический билдер.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import org.json.JSONException;
import org.json.JSONObject;
 
public class CountryClass {
    private String countryName;
    private int countryFlag;
 
    public CountryClass(String cName, int flagImage)
    {
        countryName = cName;
        countryFlag = flagImage;
    }
 
    public CountryClass() {
 
    }
 
    public String getCountryName()
    {
        return countryName;
    }
    public int getCountryFlag()
    {
        return countryFlag;
    }
    public String toString()
    {
        return countryName;
    }
 
    public JSONObject toJSON() {
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("name", countryName);
            jsonObject.put("flag", countryFlag);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jsonObject;
    }
 
    public static CountryClass create(JSONObject json) {
        try {
            return new CountryClass(json.getString("name"), json.getInt("flag"));
        } catch (JSONException e) {
            return new CountryClass();
        }
    }
 
}
Всё, теперь можно сохранять объект по цепочке Class->JSON->String, и читать String->JSON-Class.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class CountryManager {
    public static final String PREF_KEY = "cities";
 
    static void saveData(List<CountryClass> countryClasses) {
        JSONArray jsonArray = new JSONArray();
        for (CountryClass c : countryClasses) {
            jsonArray.put(c.toJSON());
        }
        //SAVE
        Preferences.save(PREF_KEY, jsonArray.toString());
    }
 
    static List<CountryClass> getData() throws JSONException {
        String string = Preferences.get().getString(PREF_KEY, null);
        List<CountryClass> countryClasses = new ArrayList<CountryClass>();
        if (string == null) {
            return countryClasses;
        }
        JSONArray array = new JSONArray(string);
        for (int i = 0; i < array.length(); i++) {
            countryClasses.add(CountryClass.create(array.getJSONObject(i)));
        }
        return countryClasses;
    }
}
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
23.02.2014, 13:37  [ТС]     Как поместить в preferences arrayList типа: arraylist<Class> #3
Класс. Но вот только ругается чего то на строчки:

Java
1
Preferences.save(PREF_KEY, jsonArray.toString());
The method save(String, String) is undefined for the type Preferences

и
Java
1
String string = Preferences.get().getString(PREF_KEY, null);
The method get(String, String) in the type Preferences is not applicable for the arguments ()

подскажите пожалуйста, что может быть не так?
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
23.02.2014, 16:34     Как поместить в preferences arrayList типа: arraylist<Class> #4
Stylish2013,
Preferences.save и Preferences.get() я для примера написал. Используйте свой доступ к хранилищу
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
23.02.2014, 16:47  [ТС]     Как поместить в preferences arrayList типа: arraylist<Class> #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
Preferences.save и Preferences.get() я для примера написал. Используйте свой доступ к хранилищу
Да, я уже разобрался. Спасибо огромное Вам за помощь. Всё работает.
Yandex
Объявления
23.02.2014, 16:47     Как поместить в preferences arrayList типа: arraylist<Class>
Ответ Создать тему
Опции темы

Текущее время: 20:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru