Как сделать массив массивов массивов разделяемым в Android

Моя проблема в том, что у меня есть массив массивов с пользовательскими объектами, которые необходимо передавать из одного действия в другое.

Понятно, скажем, у меня есть что-то вроде:

ArrayList<ArrayList<Statement>> data;  

в одном действии, и я хочу передать его другому. Итак, первое, что я сделал, это заставило Заявление реализовать класс Парселируемый. Затем в первом действии (отправитель) я вызываю метод поставитьЭкстра(), передавая ему данные. Во втором действии (получатель) я вызываю метод получить сериализуемый экстра(), чтобы получить данные.

Это работает. Но я читал, что Parcelable будет лучше для эффективности и т. д., поэтому я попытался вызвать поставитьParcelableArrayListExtra() в действии отправителя и метод получитьParcelableArrayListExtra() в действии получателя. Но когда я это делаю, я получаю красные подчеркивания, указывающие на что-то. как

ArrayList< android.os.Parcelable > is required

в первом действии, которое является отправителем, у меня есть строка:

Intent intent = new Intent(SenderActivity.this, ReceiverActivity.class);

intent.putParcelableArrayListExtra(SenderActivity.EXTRA_LISTOFSTATEMENTLISTS, dataListOfStatementLists);

В деятельности приемника у меня есть что-то. как:

myList = ( ArrayList<ArrayList<Statement>>) getIntent().getParcelableArrayListExtra(EXTRA_LISTOFSTATEMENTLISTS);

Что мне нужно исправить? Я знаю основы того, как отправлять объекты Parcelable из одного действия в другое. Но это было все, как

ArrayList<ParcelableObject> data

Я никогда не делал этого для вложенных данных, подобных этому

ArrayList<ArrayList<ParcelableObject>>

Я надеюсь, что кто-то может помочь.

заранее спасибо

Просто оберните список внутри объекта, который можно разделить.

Michael 19.02.2019 13:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
367
3

Ответы 3

Попробуйте это, чтобы отправить данные

Intent intent = new Intent(SenderActivity.this, ReceiverActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelable("object", List);
in.putExtra("list", bundle);
startActivity(in);

Для получения данных

Intent i=getIntent();
Bundle bundle= i.getBundleExtra("list");
ArrayList<Statement> list = bundle.getParcelable("object");

Это просто еще один способ сделать это. Я полагаю, вы знаете, как получить значения в другой деятельности.

ArrayList<ArrayList<Statement>> data;
Bundle bundle = new Bundle();
bundle.putInt("size", data.size());
for (int i = 0; i < data.size(); i++) {
    bundle.putParcelableArrayList("item"+i, data.get(i));
}

Каждый раз, когда вы хотите передать данные из одного действия в другое через Intent, вы должны убедиться, что классы, в которых вы создаете объекты, которые хотите отправить, реализуют Serializable, иначе это не сработает. Ваша проблема может быть связана с этим, поэтому я рекомендую вам внедрить Serializable в свои классы.

Другие вопросы по теме