我想将List<Map<String, String>>
传递给另一个活动。如何为它实现Parcelable?
答案 0 :(得分:2)
如果可能,请尝试使用Bundle
代替Map
。在您的情况下,List<Map<String, String>>
Bundle
可以很好地替换。
更多信息:http://developer.android.com/reference/android/os/Bundle.html
答案 1 :(得分:1)
您可以扩展Map
并为其实施Parcelable
。在写入parcel时,您可以将元素数量写为第一个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());
}
而且我相信有一种方法可以将parcelables列表添加到bundle中,因为现在你的地图是一个可以分解的,所以它不会有任何问题。
答案 2 :(得分:1)
你可以这样做: 1.在您希望传递此列表的位置创建活动构造函数。
public Class CalledActivity extends Activity{
List<Map<String, String>> list;
public calledActivity(List<Map<String, String>> list){
this.list=list;
}
}
2。从活动中调用此构造函数,您希望从中传递列表。
请参阅此问题以供参考。 android activity class constructor working