2015-09-27 5 views
2

Я сделал это в деятельности. Вот ответы переменная ArrayList типа пользовательского объекта LeaseDetailResponse.Как передать Arraylist пользовательского типа объекта из Activity в Service, используя библиотеку Parceler?

Intent intent = new Intent(TestActivity.this, AlarmService.class); 
    intent.putParcelableArrayListExtra(AlarmService.LEASE_DETAIL_RESPONSE_LIST, (ArrayList<? extends Parcelable>) Parcels.wrap(responses)); 
    startService(intent); 

В AlarmService

Parcels.unwrap((Parcelable) intent.getParcelableArrayListExtra(LEASE_DETAIL_RESPONSE_LIST)); 

показывает ошибку

java.lang.ClassCastException: org.parceler.NonParcelRepository$ListParcelable cannot be cast to java.util.ArrayList 

    Caused by: java.lang.ClassCastException: org.parceler.NonParcelRepository$ListParcelable cannot be cast to java.util.ArrayList 

ответ

2

вопрос с гипсом на ArrayList ... Parceler имеет дело только с Parcelable. Вы должны использовать putExtra() вместо этого не гипса:

Intent intent = new Intent(TestActivity.this, AlarmService.class); 
intent.putExtra(AlarmService.LEASE_DETAIL_RESPONSE_LIST, Parcels.wrap(responses)); 
startService(intent); 

И десериализация в вашем AlarmService:

Parcels.unwrap(intent.getParcelableExtra(LEASE_DETAIL_RESPONSE_LIST));