2016-05-16 3 views
1

У меня есть пользовательский объект, который имеет private List<AnotherCustomObject> mList;. Обратите внимание, что AnotherCustomObject реализует Parcelable.Написание списка для удобства?

Однако, если я хочу, чтобы написать mList в dest в writeToParcel(), а затем прочитать его позже, это правильный путь:

dest.writeList(mList);

, а затем в методе чтения

in.readList(mList, ClassLoader.getSystemClassLoader());

Исправить?

+1

вы пробовали это делать? –

+0

Он не выдает ошибок, но это не делает его правильным –

ответ

0

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

in.readList(mList, AnotherCustomObject.getClass().getClassLoader()); 
+0

Есть ли разница между '.class' и' .getClass() '? –

+0

Лучше будет статический доступ через '.class' –

0

Ваш List<AnotherCustomObject> mList может быть считан с помощью метода readTypedList(List<T> list, Creator<T> c) и записывается с помощью метода writeTypedList(List<T> val).

В вашем методе writeToParcel можно было бы написать следующее:

dest.writeTypedList(mList); 

, а затем в конструктор, который создает экземпляр из Parcel объекта вы можете поставить:

in.readTypedList(mList, AnotherCustomObject.CREATOR);