listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent it = new Intent(getActivity(), ReleaseDetail.class);
final SerializableMap myMap = new SerializableMap();
myMap.setMap(tempList);// 将map数据添加到封装的myMap中
Bundle bundle = new Bundle();
bundle.putSerializable("map1", myMap);
it.putExtras(bundle);
startActivity(it);
getActivity().finish();
}
});
public class SerializableMap implements Serializable {
private static final long serialVersionUID = 3958588986554810147L;
private Map<String, ReleaseContents> map;
public Map<String, ReleaseContents> getMap() {
return map;
}
public void setMap(Map<String, ReleaseContents> tempMap) {
this.map = tempMap;
}
}
ReleaseContents是一个实体类也实现了Serializable 接口还是报以下错误呢!!!
07-12 12:51:58.093: E/AndroidRuntime(12270): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = XXX.SerializableMap)XXX
查资料说是对象也是要先序列化接口,我ReleaseContents都实现了的呀!请问是哪里错了哦!
ReleaseContents
類別下使用到的類別也需要實作Serializable
接口,例如你的ReleaseContents
類別裡面有個屬性是Version類,那麼這個
Version
類別也許實作Serializable
介面。ReleaseContents
类下使用到的类也需要实现Serializable
接口,例如你的ReleaseContents
类里面有个属性是Version
类,那么这个Version
类也许实现Serializable
接口。回到你的例子,很明显,在
回到你的例子,很明顯,在ReleaseContents
类有个属性是Bitmap
类,Bitmap
并没有实现Serializable
接口,而是实现了Parcelable
ReleaseContents
類別有個屬性是Bitmap
類,Bitmap
並沒有實作Serializable接口,而是實現了
Parcelable
接口。 🎜使用Android的序列化類,而非是傳統的java序列化類
Parcelable 這個。或是利用Gson工具將map轉換成String,然後傳遞再解析成map
map
没有实现序列化的接口,无法实现序列化,可以尝试一下hashmap
,hashmap
原本就可以保存在bundle
中,也可像楼上一样使用parcelable
實現這個速度也更快。用一個CacheUtil,把這map保存在記憶體中