为List实现Parcelable <map <string,string =“”>&gt; </map <string,>

时间:2012-06-04 06:43:50

标签: android

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

3 个答案:

答案 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