如何为包含 List> 的类实现 Parcelable?

2023-11-24

我有一个工作Parcelable我的 Parcelable 类中的所有字段的实现,除了List<List<String>>

class Employee implements Parcelable {

    List<List<String>> details;
    //.......

    protected Employee(Parcel in) {
        details = new ArrayList<List<String>>();
        // i know this is wrong just posting to clarify
        in.readList(details, List.class.getClassLoader());
        //......
    }

    public void writeToParcel(Parcel dest, int flags) {
        dest.writeList(details);
        //.....
    }

    public int describeContents() {
        return 0;
    }

    public static final Parcelable.Creator<Employee> CREATOR = 
            new Parcelable.Creator<Employee>() {
        public Employee createFromParcel(Parcel in) {
            return new Employee(in);
        }

        public Employee[] newArray(int size) {
            return new Employee[size];
        }
    };

}

例外:

05-10 19:07:44.072: E/AndroidRuntime(10661): Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@42a509e8: Unmarshalling unknown type code 3604535 at offset 268

延伸ArrayList并实施Parcelable它对我有用。

public class ParcelableArrayList extends ArrayList<String> implements 
        Parcelable {

    private static final long serialVersionUID = -8516873361351845306L;

    public ParcelableArrayList(){
        super();
    }

    protected ParcelableArrayList(Parcel in) {
        in.readList(this, String.class.getClassLoader());
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeList(this);
    }   

    public static final Parcelable.Creator<ParcelableArrayList> CREATOR = 
            new Parcelable.Creator<ParcelableArrayList>() {
        public ParcelableArrayList createFromParcel(Parcel in) {
            return new ParcelableArrayList(in);
        }

        public ParcelableArrayList[] newArray(int size) {
            return new ParcelableArrayList[size];
        }
    };

}

和员工类

class Employee implements Parcelable {

    List<ParcelableArrayList> details;
    //.......

    protected Employee(Parcel in) {
        details = new ArrayList<ParcelableArrayList>();
        in.readTypedList(details,ParcelableArrayList.CREATOR);
        //......
    }

    public void writeToParcel(Parcel dest, int flags) {
        dest.writeList(details);
        //.....
    }

    public int describeContents() {
        return 0;
    }

    public static final Parcelable.Creator<Employee> CREATOR = 
            new Parcelable.Creator<Employee>() {
        public Employee createFromParcel(Parcel in) {
            return new Employee(in);
        }

        public Employee[] newArray(int size) {
            return new Employee[size];
        }
    };

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为包含 List> 的类实现 Parcelable? 的相关文章

随机推荐

  • 在 Thrift IDL 中,如何说客户端应该在结构中包含一组字段中的一个?

    假设我在 Apache Thrift IDL 文件中定义了一个包含两个字段的结构 例如 struct Thing 1 optional string name 2 optional i32 size 这意味着客户端可以提供没有字段 名称 大
  • 如何使用 html5 输入类型数字处理浮点数和小数分隔符

    我正在构建主要针对移动浏览器的网络应用程序 我使用数字类型的输入字段 因此 大多数 移动浏览器仅调用数字键盘以获得更好的用户体验 这个网络应用程序主要用于小数分隔符是逗号而不是点的区域 所以我需要处理这两个小数分隔符 如何用点和逗号来掩盖这
  • Google BigQuery 中“超出配额:为此项目扫描了太多免费查询字节”

    从昨天开始 在使用 JasperReports Server 尝试 Google BigQuery 后 我收到了上述错误 我找不到任何相关信息 因为前 100GB 应该是免费的 而且 BigQuery 访问报告显示 API 项目的 BigQ
  • 老练的阴谋家,letcc 和 guile

    这里有几个问题 关于letcc这是 老练的阴谋家 中使用的 define intersect all sets letcc hop letrec A lambda sets cond null car sets hop null cdr s
  • 对OpenCV的FaceRecognizer有什么信心?

    我一直在使用 OpenCV 的 FaceRecognizer 进行人脸识别项目 进行性别区分 该算法运行得很好 但我想在我的程序中实现一些额外的功能 例如预测的置信度 预测函数可以输出置信度 但我不确定这意味着什么 这种置信度实际上衡量的是
  • IE VS Chrome 和 Firefox 中的网络安全(错误)

    为什么网络安全在不同浏览器上的工作方式不同 Details 我有两个应用程序 一个是简单的HTML应用程序 另一个是ASP NET MVC4 WebApi应用程序和项目位于同一解决方案内 我设置了多个启动项目来同时运行应用程序 工作版本 我
  • OWin支持WCF吗?

    我有一个 C 项目 它通过 WebApi 和 WCF 公开服务 它在 IIS 下运行 现在我需要将其作为自托管解决方案提供 我找不到有关 Owin 以及如何公开 WCF 服务的文档 OWin支持WCF吗 我觉得这个问题应该反过来问 WCF
  • 以 pointfree 风格编写函数的一般方案是什么?

    我正在通过20 个中级 Haskell 练习目前 这是一个非常有趣的练习 它涉及实现类型类的各种实例Functor and Monad 以及需要的函数Functors and Monads 作为参数 但是有可爱的名字 比如Furry and
  • 手机间隙相机方向

    我使用 Phone Gap 版本开发了一个应用程序0 9 3 当我在应用程序中打开相机时 它始终以横向模式打开 并且在捕获时 图像以横向格式返回 如何将相机模式更改为纵向 navigator camera getPicture onsucc
  • 命名空间 * 已包含 * 的定义

    我在 ASP NET Web 应用程序中创建了单独的文件夹和页面 当我构建解决方案时 我收到错误 The Namespace MyApp already contains a defintion for VDS 这是VDS Master c
  • 逗号的左操作数没有作用?

    我在处理此警告消息时遇到了一些问题 它是在模板容器类中实现的 int k 0 l 0 for k index 1 l 0 k lt sizeC l lt sizeC index k l elements k arryCpy l delete
  • Path.将绝对路径字符串与相对路径字符串组合

    我正在尝试使用相对路径加入 Windows 路径Path Combine 然而 Path Combine C blah bling 回报C blah bling代替C bling 有谁知道如何在不编写我自己的相对路径解析器的情况下完成此任务
  • 使用 Numpy 数组作为查找表

    我有一个从 csv 文件读取的 Numpy 数据的二维数组 每行代表一个数据点 最后一列包含一个 键 该 键 唯一对应于另一个 Numpy 数组 即 查找表 中的 键 将第一个表中的行与第二个表中的值相匹配的最佳 最 Numpythonic
  • 取消按键事件

    我怎样才能返回密钥 意思是如果我只想在文本框中只允许整数值 我怎样才能不允许用户不输入非整数 关于 KeyPress事件 我知道还有其他方法 例如表达式来匹配字符串值 但我不想为文本框分配无效值 if value gt 0 a value
  • AudioManager的底层流类型有什么区别?

    有几种流类型音频管理器 它们在低水平上有何不同 是否可以使用例如AudioManager STREAM MUSIC 阻止输入麦克风流 或者是其他东西 最显着的区别之一是音量控制 As the document也就是说 我们可以分别为每个流设
  • 命名空间内的方法c#

    有没有什么方法可以调用命名空间内的函数 而无需在 C 中声明类 例如 如果我有 2 个完全相同的方法 并且应该在我的所有 C 项目中使用 有没有什么方法可以将这些函数放入 dll 中 然后在顶部说 Using myTwoMethods 并启
  • 为什么我的主机 (softsyshosting.com) 不能支持 BeginRequest 和 EndRequest 事件处理程序?

    我听说了 Softsys Hosting 的一些优点 因此我决定将我的 ASP NET MVC 解决方案转移给他们 但它不会在他们身上运行 我能够将问题查明到我的 BeginRequest 事件处理程序 如果我有它们 我会得到一个错误 这是
  • 寻找数据库版本控制的解决方案

    问题描述 在我们的项目中 我们有一个 生产数据库 和许多 开发人员 我们想知道如何管理和安装这些更改 我们已经有了一些程序 但需要花费大量时间 有时还会出现错误 我们不能丢失数据 所以我们不能使用 删除表 我们只能使用 alter tabl
  • 如何在 PHP 中对数字进行四舍五入?

    我需要将所有非整数四舍五入到最接近的整数 无论 小数点后的数字是否 gt 5 您可以使用ceil value PHP 中的四舍五入函数 同样你可以利用floor 用于向下舍入
  • 如何为包含 List> 的类实现 Parcelable?

    我有一个工作Parcelable我的 Parcelable 类中的所有字段的实现 除了List