Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
#1

Сериализация - Программирование Android

29.01.2014, 16:19. Просмотров 1254. Ответов 1
Метки нет (Все метки)

У меня есть ArrayList<ZoneView>;
который я сериализую в функции onPause();
но при десериализации обратно из файла я получаю только поля протого типа(int), а ArrayList<CategoryForZone> путой, подскажите, как лучше сериализовать объекты типа ZoneView

Поля классов:
Java
1
2
3
4
5
6
7
public class ZoneView implements Serializable{
    private static final long serialVersionUID = 2952056031459050819L;
    //Поля
    private int colorZone;                              //Цвет зоны: 0 - зеленая, 1 - желтая, 2 - красная
    private ArrayList<CategoryForZone> categoryList;    //Список категорий находящихся в зоне
    //************************************************************************************************
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class CategoryForZone implements Serializable{
    private static final long serialVersionUID = -3232463882399970536L;
    //Статическое поле для ID категории
    private static int ID = 100;  
    //Поля
    private String nameCategory;    //Имя категории 
    private String commentCategory; //Комментарий для категории
    private int idCategory;         //id категории
    private double currentSumm;     //Текущее состояние счета
    private List<Money> income;     //
    private List<Money> consumption;//
    //private viewButton;           //Цвет кнопки
    //private icon;                 //Иконка категории  
    private int colorZone;          //Цвет зоны в которой находится кнопка
    //******************************************************************************************
}
Java
1
2
3
4
5
6
7
public class Money {
    //Поля
    private double summ;    //Сумма
    private String comm;    //Комментарий
    private int idCategory; //Id категории
    //**********************************************
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2014, 16:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сериализация (Программирование Android):

Файлы и сериализация - Программирование Android
Возникла надобность создать распарсить из xml файл и сохранить его в бинарном виде для дальнейшего определения его в папку assets и...

Сериализация View - Программирование Android
Здравствуйте. Мучает такой вопрос: Использую FrameLayout в коотрый динамически добавляются ImageView после чего пользователь может...

Сериализация объекта в файл - Программирование Android
Как сделать сериализацию объекта в файл. Можно пример пожалуйста. Спасибо

Windows Forms и сериализация. Сериализация контрола - C#
Привет всем. Для того что бы набраться опыта делаю игрушку-лабиринт. В есть старт и финиш. Нужно вести мышкой и не попадать на стены. Игру...

Сериализация - C#
В общем у меня есть задание связанное с бд автовокзала, и там сказано применить механизм сериализации, но я не очень понимаю что это такое,...

Сериализация - Java
Нужно из 1-го класса передать во второй класс объект, который будет превращен в последовательность байтов, далее записать эту...

1
Netscape
374 / 361 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
29.01.2014, 16:29 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
http://developer.android.com/reference/android/os/Parcelable.html

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
public class ZoneView implements Parcelable {
    private int colorZone;
    private ArrayList<CategoryForZone> categoryList; 
 
    protected ZoneView(Parcel in) {
        colorZone = in.readInt();
        if (in.readByte() == 0x01) {
            categoryList = new ArrayList<CategoryForZone>();
            in.readList(categoryList, CategoryForZone.class.getClassLoader());
        } else {
            categoryList = null;
        }
    }
 
    @Override
    public int describeContents() {
        return 0;
    }
 
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(colorZone);
        if (categoryList == null) {
            dest.writeByte((byte) (0x00));
        } else {
            dest.writeByte((byte) (0x01));
            dest.writeList(categoryList);
        }
    }
 
    @SuppressWarnings("unused")
    public static final Parcelable.Creator<ZoneView> CREATOR = new Parcelable.Creator<ZoneView>() {
        @Override
        public ZoneView createFromParcel(Parcel in) {
            return new ZoneView(in);
        }
 
        @Override
        public ZoneView[] newArray(int size) {
            return new ZoneView[size];
        }
    };
}
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class CategoryForZone implements Parcelable {
    private static int ID = 100;  
    private String nameCategory;
    private String commentCategory;
    private int idCategory;
    private double currentSumm;
    private List<Money> income;
    private List<Money> consumption;
    private int colorZone;
 
    protected CategoryForZone(Parcel in) {
        nameCategory = in.readString();
        commentCategory = in.readString();
        idCategory = in.readInt();
        currentSumm = in.readDouble();
        if (in.readByte() == 0x01) {
            income = new ArrayList<Money>();
            in.readList(income, Money.class.getClassLoader());
        } else {
            income = null;
        }
        if (in.readByte() == 0x01) {
            consumption = new ArrayList<Money>();
            in.readList(consumption, Money.class.getClassLoader());
        } else {
            consumption = null;
        }
        colorZone = in.readInt();
    }
 
    @Override
    public int describeContents() {
        return 0;
    }
 
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(nameCategory);
        dest.writeString(commentCategory);
        dest.writeInt(idCategory);
        dest.writeDouble(currentSumm);
        if (income == null) {
            dest.writeByte((byte) (0x00));
        } else {
            dest.writeByte((byte) (0x01));
            dest.writeList(income);
        }
        if (consumption == null) {
            dest.writeByte((byte) (0x00));
        } else {
            dest.writeByte((byte) (0x01));
            dest.writeList(consumption);
        }
        dest.writeInt(colorZone);
    }
 
    @SuppressWarnings("unused")
    public static final Parcelable.Creator<CategoryForZone> CREATOR = new Parcelable.Creator<CategoryForZone>() {
        @Override
        public CategoryForZone createFromParcel(Parcel in) {
            return new CategoryForZone(in);
        }
 
        @Override
        public CategoryForZone[] newArray(int size) {
            return new CategoryForZone[size];
        }
    };
}
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
public class Money implements Parcelable {
    private double summ;
    private String comm;
    private int idCategory;
 
    protected Money(Parcel in) {
        summ = in.readDouble();
        comm = in.readString();
        idCategory = in.readInt();
    }
 
    @Override
    public int describeContents() {
        return 0;
    }
 
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeDouble(summ);
        dest.writeString(comm);
        dest.writeInt(idCategory);
    }
 
    @SuppressWarnings("unused")
    public static final Parcelable.Creator<Money> CREATOR = new Parcelable.Creator<Money>() {
        @Override
        public Money createFromParcel(Parcel in) {
            return new Money(in);
        }
 
        @Override
        public Money[] newArray(int size) {
            return new Money[size];
        }
    };
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 16:29
Привет! Вот еще темы с ответами:

Сериализация - C++
есть небольшая программа вот структура данных которая в ней используется class table { public: int number,kol,year; ...

Сериализация - Java
куда в этом коде запишется объект? ByteArrayOutputStream bOut = new ByteArrayOutputStream(); ObjectOutputStream oOut = new...

Сериализация - PHP БД
Подскажите как это все реализовать: Необходимо в колонку drug записать пользователя на страницу которого высылается приглашение mid...

Сериализация - C#
Для определения количества записей предназначена функция COUNT(*), это вам наверняка известно. А то, что SQL не возвращает вам количество...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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