Обмен данными между сервисами и действиями

У меня есть ListView с настраиваемым ArrayAdapter, который показывает заказы из ArrayList. Предполагается, что эти заказы синхронизируются с моим сервером. Там у меня есть API, который я запрашиваю для новых заказов, и если они есть, я получаю обратно XML заказа. Каков наилучший подход к динамическому обновлению listView? Я не хочу использовать SQLite для хранения заказов, потому что должны отображаться только последние десять. С ContentProvider я не могу сохранить свой собственный объект Order. И если я заверну ArrayList в одноэлементный класс и использую его в службе, а также в классе Activity для ArrayAdapter, ListView не будет динамически обновляться (возможно, потому, что arrayAdapter делает копию массивов?). Большое тебе спасибо.

Филип


person Filip Majernik    schedule 26.09.2011    source источник


Ответы (2)


используйте намерение или Bundle

person ngesh    schedule 26.09.2011

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

У меня есть DataMaanger, который является мостом между Activity и Networking или SQLite. DataMaanger хранит данные в памяти, поэтому их нет в БД или на диске. Недостатком этого является то, что если ваше приложение будет убито из-за нехватки памяти и восстановит себя, dataManager будет пустым, что оставляет вам два варианта: либо при каждой смерти Activitie, либо при смерти основной задачи, вы сериализуете данные своего DataManager, либо если вы не зависите от каких-либо предыдущих данных, просто выполните запрос еще раз и обновите диспетчер данных. Я использую трансляции, чтобы уведомлять о своих действиях.

Чтобы получить доступ к DataManager, я не использую сиглетон. Я использую объект Application, вы можете расширить его, и в Manifest.xml укажите его имя в теге, тогда он будет использоваться вместо объекта Regualr Application.

Вы можете получить к нему доступ позже, используя метод getApplication () в классе Activity.

person codeScriber    schedule 26.09.2011