我想将 a 传递List<Map<String, String>>
给另一个 Activity。如何为它实现 Parcelable?
问问题
1584 次
3 回答
2
如果可能,请尝试Bundle
改用Map
. 在您的情况下,List<Map<String, String>>
aBundle
可以很好地替代。
更多信息:http: //developer.android.com/reference/android/os/Bundle.html
于 2012-12-21T19:50:42.187 回答
1
您可以扩展Map
和实施Parcelable
它。写入包裹时,您可以将元素计数写为 first int
,然后遍历条目并一个接一个地添加它们,例如:
destParcelable.writeInt(size());
for (final Entry<String, String> entry : getEntries()) {
destParcelable.writeString(entry.getKey());
destParcelable.writeString(entry.getValue());
}
从包裹中读取时,只需读取第一个int
(这将是您的条目数)并开始一个循环读取键和值:
final int size = srcParcelable.readInt();
for (int i=0; i<size; i++) {
put(srcParcelable.readString(), srcParcelable.readString());
}
而且我相信有一种方法可以将包裹列表添加到捆绑中,并且由于您的地图现在是可包裹的,因此不会有任何问题。
于 2012-06-04T07:19:31.993 回答
1
你可以这样做: 1. 在你想传递这个列表的地方创建一个活动的构造函数。
public Class CalledActivity extends Activity{
List<Map<String, String>> list;
public calledActivity(List<Map<String, String>> list){
this.list=list;
}
}
2.从活动中调用此构造函数,您要从中传递列表。
请参阅此问题以供参考。android活动类构造函数工作
于 2012-06-04T09:22:41.247 回答