Моя проблема в том, что у меня есть массив массивов с пользовательскими объектами, которые необходимо передавать из одного действия в другое.
Понятно, скажем, у меня есть что-то вроде:
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>>
Я надеюсь, что кто-то может помочь.
заранее спасибо




Попробуйте это, чтобы отправить данные
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 в свои классы.
Просто оберните список внутри объекта, который можно разделить.