Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,317
#1

Передать через intent ArrayList объектов своего класса - Программирование Android

16.06.2016, 23:21. Просмотров 703. Ответов 7
Метки нет (Все метки)

У меня есть ArrayList из обьектов моего класса. Мне нужно передать это через intent в другое активити. Значит мой класс должен реализовывать интерфейс Parcelable. Но дело в том, что в этом моем классе есть поля, которые тоже представляют собой обьекты других моих классов(как бы композиция). Как запихнуть в parcel полностью такой класс - композицию? Получается другие объекты которые входят в этот класс тоже должны реализовывать Parcelable или как?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 23:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Передать через intent ArrayList объектов своего класса (Программирование Android):

Передача ArrayList<String> через intent
Создан класс для передачи через intent: package ru.frozik6k.lohouse; import...

Передать через intent VIEW
Как можно через intent передать &quot;VIEW&quot;, полученное вот таким способом: View...

Передать ссылку на класс через Intent
Возможно ли подобное? Есть класс, в котором храню больше 50 параметров...

Как передать ссылку через Intent
Как можно в такой класс package app.kray.anddev; import...

Передать через Intent информацию об Item
Выводит ошибку и приложение закрывается by Force Close ошибка по ходу в...

Пытаюсь передать данные через Intent, но выходит ошибка
Пытаюсь передать данные через Intent, но выходит ошибка, когда пытаюсь передать...

7
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
17.06.2016, 09:05 #2
Цитата Сообщение от yura91 Посмотреть сообщение
другие объекты которые входят в этот класс тоже должны реализовывать Parcelable
Разумеется. Это же вам напишет и компилятор, если вдруг забудете реализовать Parcelable.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,317
17.06.2016, 10:20  [ТС] #3
Ну а как тогда этот объект композицию полностью запихнуть в parcel? Дело в том, что в parsel можно запихнуть только поля которые имеют тип String, int, double и тп(parcel.readInt,parcel.readString и др, но нет методов для записывания моего обьекта в parcel) . Ну а если есть поля, внутри класса которые тоже обьекты только другого моего класса, то какие есть методы чтобы их запихнуть в parcel вместе с остальными полями моего класса? Или их нужно передавать отдельно через intent??
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
17.06.2016, 12:09 #4
yura91, если это сложные объекты типа Context, то никак. Если это сериализуемые или parcelable-классы, то по каждому классу надо писать обработку. Вообще, к чему вопросы? Взяли да попробовали.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,317
17.06.2016, 13:36  [ТС] #5
Нет это не объекты типа Context. Это обьекты тоже моих классов(они тоже реализуют parselable) а как правильно написать для них обработку в таком случае?

Добавлено через 1 минуту
Ну что бы в parsel их можно было запихивать когда запихивается туда класс их содержащий??
0
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 51
17.06.2016, 15:28 #6
Вот ни разу не пробовал, но вроде как можно еще с помощью json-строки передать. Попробуй поэкспериментировать в этом направлении.
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
17.06.2016, 16:15 #7
Лучший ответ Сообщение было отмечено yura91 как решение

Решение

любой класс-модельку элементарно передавать одной json-строкой, сто раз уже показывал как
1. подключаем
XML
1
compile 'com.google.code.gson:gson:2.6.2'
2. ложим в бандл, или чем там передается, json-строку полученную из класса-модели
Java
1
2
3
4
        Gson gson = new Gson();
        String json = gson.toJson(model);
        Bundle bundle = new Bundle();
        bundle.putString("JSON_MODEL", json);
3. достаем это все
Java
1
2
3
        Gson gson = new Gson();
        final String json = bundle.getString("JSON_MODEL");
        MyModelClass model = gson.fromJson(json, MyModelClass.class); // вместо MyModelClass имя класса-модельки
если в строку переводится не просто 1 объект, а ArrayList то
достаем немного по-другому, тут подробнее

но зная топикстартера, уверен что это все бестолку
2
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,317
18.06.2016, 20:15  [ТС] #8
Спасибо
0
18.06.2016, 20:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2016, 20:15
Привет! Вот еще темы с решениями:

Как передать через intent нажатие кнопки в другом активити
В первом активити у нас есть две кнопки 1 и 2. Во втором активити ещё две...

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
Выдает такую ошибку, хотя смартфон видит, он разрешает отладку, при запуске...

Передать адаптер в Intent
Как это сделать??? Создал свой адаптер (My_adapter) для списка цветных строк и...

Как передать intent данные в Service?
Здравствуйте! как передать intent данные в класс с расширением Service?...


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

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

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