我创建了一个名为ChannelObj的类,其中包含类似
的值public class ChannelObj {
public String enable;
public String id;
public String name;
public String ptz;
public ChannelObj(Node n){
this.enable = n.getAttributes().getNamedItem("enabled").getNodeValue();
this.id = n.getAttributes().getNamedItem("id").getNodeValue();
this.name = n.getAttributes().getNamedItem("name").getNodeValue();
this.ptz = n.getAttributes().getNamedItem("ptz").getNodeValue();
}
}
并且这个类可以创建包含我需要的数据的Obj;
之后,我有一个名为allChannel的ArrayList包含我已经拥有的所有ChannelObj
像这样 for(int i = 0;i<num_of_channel;i++)
{
allChannel.add(new ChannelObj(n1.item(i)));
}
我已检查allChannel中的数据是否正确
但我希望将此ArrayList传递给下一个Activity
我尝试过像
这样的方式 Intent i = new Intent(this,ChannelListActivity.class);
Bundle b = new Bundle();
b.putParcelableArrayListExtra("dd", ArrayList<ChannelObj> allChannels);
i.putExtra(String name,b);
startActivity(i);
但没有奏效仍然错误
我想做什么?
感谢您的帮助!
答案 0 :(得分:1)
Benoir给出的答案的替代方法是让您的ChannelObj
类实现Serializable
接口。您只使用简单的数据类型,因此所有(反)序列化都将在水下自动完成(g)(t)。
如果您的类实现了Serializable,那么您可以按如下方式将它添加到Bundle中:
bundle.putSerializable("CHANNELOBJ_LIST", mChannelObjList);
请注意,由于ArrayList<ChannelObj>
接口未实现Serializable,您可能需要转换为List<T>
(或List<T>
的其他具体实现)。
检索下一个活动中的对象列表同样容易:
List<ChannelObj> mChannelObjList = (ArrayList<ChannelObj>) bundle.getSerializable("CHANNELOBJ_LIST");
答案 1 :(得分:0)
您的clas必须在Parcelable