在库类上使用Parcelable

时间:2011-03-07 09:45:19

标签: android parcelable parcel

我想在Activities之间发送一个对象。阅读本文后我得出结论,使用Parcelable是最好的方式,因为它对性能的影响最小。我想这样做的原因是因为我需要从网络下载数据来创建一个Object,所以我不想继续下载数据。

但是,为了使用Parcel,该类需要实现Parcelable。当我试图发送一个在库中定义的对象时,我无法编辑该类以包含它。

解决困境的最佳方法是什么?

我尝试过扩展库类并实现Parcelable但是因为ClassCastException而失败了。我也看到提到我应该创建一个Parcelable类来包装我的库类并以这种方式发送它?

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否尝试使用Bundle

例如,如果您有parcelable类User

Bundle bundle = new Bundle();
List<User> users = new ArrayList<User>();
String userName = user.setUserName("some name");
boolean isOnline = user.setOnline(true);
users.add(user);
bundle.putParcelableArrayList("USER", users);

您可以将其检索为:

public ArrayList<User> getParcelableArrayList(Bundle bundle){
   List<User> userList = new ArrayList<User>();
   userList = bundle.getParcelableArrayList("USER");
}

答案 1 :(得分:0)

如何使用parceler library?你可以tell your Application to parcel library classes

@ParcelClass(LibraryParcel.class)
public class AndroidApplication extends Application{
    //...
}

如果可行,您可以使用以下代码进行换行/解包:

Parcelable wrapped = Parcels.wrap(new Example("Andy", 42));
Example example = Parcels.unwrap(wrapped);
example.getName(); // Andy
example.getAge(); // 42