Как отправить ArrayList пользовательских объектов в Bundle - PullRequest
3 голосов
/ 17 сентября 2010

У меня есть приложение, которое использует сервис для создания ArrayList пользовательских объектов (MyObject) каждые x секунд. Затем я хочу, чтобы моя активность получила этот ArrayList.

В настоящее время я планирую, чтобы Служба отправляла сообщение обработчику Действия каждый раз, когда завершает запрос данных. Я хочу, чтобы сообщение для обработчика содержало ArrayList из MyObjects.

При создании метода в Activity для извлечения этого ArrayList из сообщения я заметил, что не могу.

Если бы я попытался

msg.getData().getParcelableArrayList("myObjects")

Тогда метод, который я передавал, ожидал, что ArrayList не примет его. Если бы я попытался привести результаты:

(ArrayList<MyObject>)msg.getData().getParcelableArrayList("myObjects")

Я получил ошибку: Cannot cast from ArrayList<Parcelable> to ArrayList<MyObject>

MyObject реализует Parcelable, и я успешно отправил ArrayList из моей службы в мою деятельность, заставив мою активность вызвать метод службы для ее получения. Я пытаюсь отказаться от того, чтобы моя активность опрашивала мою службу для получения этих данных.

1) Как я могу отправить ArrayList внутри пакета в сообщении обработчику?

2) Есть ли другая модель, которую я должен использовать, чтобы моя служба обновляла данные в моей деятельности, которые могут или не могут быть видны? Я всегда хочу, чтобы данные в моей деятельности были самыми последними из Службы.

Ответы [ 3 ]

1 голос
/ 02 февраля 2015

У меня был точно такой же вопрос, и, все еще работая с Parcelable, я обнаружил, что статические переменные - не такая уж плохая идея для этой задачи.1004 *

public static ArrayList<MyObject> myObjects = .. 

и использовать его из других источников через MyRefActivity.myObjects

Я не был уверен в том, что подразумевают публичные статические переменные в контексте приложения с действиями.Если у вас также есть сомнения по поводу этого или рабочих аспектов этого подхода, обратитесь к:

Cheers.

0 голосов
/ 08 сентября 2013

Если приведение является проблемой, просто оставьте это, не бросайте, ошибка исчезнет.

0 голосов
/ 18 сентября 2010

Есть еще одна модель, которую следует использовать. Другой вопрос, который я задал, дал ответ:

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

Что касается # 1, вы можете обойти это, просто удалив обобщения из объявлений ArrayList и приведя их при необходимости к месту. Я знаю, что это работает, потому что это то, что я делал перед рефакторингом на основе другого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...