Как сделать так, чтобы arraylist из arraylists мог быть распродан в Android - PullRequest
0 голосов
/ 19 февраля 2019

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

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

ArrayList<ArrayList<Statement>> data;  

в одном упражнении, и я хочу передать его другому.Итак, первое, что я сделал, это заставил Statement реализовать класс Parcelable .Затем в первом упражнении (отправитель) я вызываю метод putExtra () , передавая ему data .Во втором упражнении (получатель) я вызываю метод getSerializableExtra () , чтобы получить данные .

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

ArrayList требуется

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

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>>

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

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

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

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

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));
}
0 голосов
/ 19 февраля 2019

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

0 голосов
/ 19 февраля 2019

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

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...