Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android实现具有hashmap的Parcelable对象_Java_Android_Parcelable - Fatal编程技术网

Java Android实现具有hashmap的Parcelable对象

Java Android实现具有hashmap的Parcelable对象,java,android,parcelable,Java,Android,Parcelable,我有这样的课 public class RateData { Map<String, List<RateDTO>> rateMap; } public class RateDTO { private String code; private String name; private String value; } 公共类费率数据{ 地图速率图; } 公务舱{ 私有字符串码; 私有字符串名称; 私有字符串值; } 现在我需

我有这样的课

public class RateData  {
    Map<String, List<RateDTO>> rateMap;
}

public class RateDTO {

     private String code;

     private String name;

     private String value;
}
公共类费率数据{
地图速率图;
}
公务舱{
私有字符串码;
私有字符串名称;
私有字符串值;
}
现在我需要parcelable这个RateData类。我认为我们不能把这个
rateMap
作为正态变量


请给我一个例子如何做到这一点

您应该将
日期设置为可包裹的
——这应该很简单。那么

Map<String, List<RateDTO>> map;

public void writeToParcel(Parcel out, int flags) {
    out.writeInt(map.size());

    for (Map.Entry<String, List<RateDTO>> entry : map.entrySet()) {
        out.writeString(entry.getKey());

        final List<RateDTO> list = entry.getValue();
        final int listLength = list.size();

        out.writeInt(listLength);

        for (RateDTO item: list) {
            out.writeParcelable(item, 0);
        }
    }
}

private MyParcelable(Parcel in) {
    final int size = in.readInt();

    for (int i = 0; i < size; i++) {
        final String key = in.readString();
        final int listLength = in.readInt();

        final List<RateDTO> list = new ArrayList<RateDTO>(listLength);
        for (int j = 0; j < listLength; j++) {
            final RateDTO value = in.readParcelable(ParentClass.class.getClassLoader());
            list.add(value);
        }

        map.put(key, list);
    }
}
Map;
公共无效写入包(包出,内部标志){
out.writeInt(map.size());
对于(Map.Entry:Map.entrySet()){
out.writeString(entry.getKey());
最终列表=entry.getValue();
final int listLength=list.size();
out.writeInt(列表长度);
对于(按项目分类:列表){
out.可写可执行(项,0);
}
}
}
私人MyParcelable(包裹内){
最终整数大小=in.readInt();
对于(int i=0;i

我还没有测试代码,但我相信它应该接近OK。请注意,如果您的地图相对较大,则此解决方案不是特别好。

到目前为止您是否尝试过任何方法?请告诉我,父类是什么意思?