1

我想将 a 传递List<Map<String, String>>给另一个 Activity。如何为它实现 Parcelable?

4

3 回答 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 回答