android如何使用intent的传输一个ArrayList<Map<String,Node>>类型的对象。

 我来答
百度网友30bb719
推荐于2016-11-10 · TA获得超过348个赞
知道小有建树答主
回答量:310
采纳率:75%
帮助的人:207万
展开全部
这种数据不建议使用intent去传,太复杂了,用bundle的话数据得有多少、、、、 建议在自己的程序里面加静态变量等于 该 ArrayList<Map<String,Node>> ,或者实现一个非静态变量的 get 和 Set方法 ,这样在其他地方可以直接调用。
千锋教育
2015-12-07 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

如果Node是自己写的一个类

那么只需要让Node实现Serializable序列化接口就行


如果Node是某个api提供的一个类那么就修改不到,这时候可以把这个对象转换为其他形式再进行传输,比如json,最简便的就用Gson框架了

ArrayList<Map<String,Node>> data = new ArrayList<Map<String,Node>>();
Map<String,Node> nodes = new HashMap<String, Node>();
nodes.put("node1", new Node());
data.add(nodes);
String jsonData = new Gson().toJson(data, new TypeToken<ArrayList<Map<String,Node>>>(){}.getType());
Intent intent = new Intent();
intent.putExtra("data", jsonData);


在接收方再使用Gson把json解析成对象

String jsonData = getIntent().getStringExtra("data");
ArrayList<Map<String,Node>> data = new Gson().fromJson(data, new TypeToken<ArrayList<Map<String,Node>>>(){}.getType());


更简便的方法就是把data设置为全局变量,随处可以访问,但是这个方法不好


总的来说,这种较大的对象不要使用intent来传输,intent只适合用来传输一些小数据,

而且intent传输时有大小限制的,为40K左右

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式