源码之家

  • 首页
  • 文章
  • 问答
  • 下载
您的位置: 首页  >  技术问答  >  保存列表与Parcelable

保存列表与Parcelable
分类: 技术问答 • 2022-08-20 23:44:41
问题描述:

实例状态,我有以下型号:保存列表<Object>与Parcelable

GitItem:

public class GitItem implements Serializable, Parcelable { 
     public int id; 
     public String name; 
     public String full_name; 
     public GitOwner owner; 

     public GitItem() { 
     } 

     public GitItem(Parcel in) { 
      id = in.readInt(); 
      name = in.readString(); 
      full_name = in.readString(); 
     } 

     public int describeContents() { 
      return 0; 
     } 

     public void writeToParcel(Parcel out, int flags){ 
      out.writeInt(id); 
      out.writeString(name); 
      out.writeString(full_name); 
     } 

     public static final Parcelable.Creator<GitItem> CREATOR = new Parcelable.Creator<GitItem>(){ 

      @Override 
      public GitItem createFromParcel(Parcel source) { 
       return new GitItem(source); 
      } 

      @Override 
      public GitItem[] newArray(int size) { 
       return new GitItem[size]; 
      } 
     }; 
    } 

和GitOwner:

public class GitOwner implements Serializable, Parcelable { 
    public String avatar_url; 

    public GitOwner(Parcel in) { 
     avatar_url = in.readString(); 
    } 

    public GitOwner() { 
    } 

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

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 

    } 

    public static final Parcelable.Creator<GitOwner> CREATOR = new Parcelable.Creator<GitOwner>(){ 

     @Override 
     public GitOwner createFromParcel(Parcel source) { 
      return new GitOwner(source); 
     } 

     @Override 
     public GitOwner[] newArray(int size) { 
      return new GitOwner[size]; 
     } 
    }; 
} 

,然后在MainActivity。 java我有一个List<GitItem> data;这是绑定到我的RecyclerView。

基本上我试图实现的是当我更改Activity或简单地旋转设备时,存储当前状态的我的List<GitItem>。不幸的是,即使我实施了Parcelable(正如其他帖子所建议的),我无法存储实例。

任何有关此事的帮助将不胜感激。

答

您还没有实现的Parcelable功能完整的身体GitOwner和GitItem类,即writeToParcel

在GitOwner类

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeString(avatar_url); 
    // add this line 
} 

和内部GitItem使用writeParcelable编写和readParcelable以其他方式阅读GitItem对象时,它将不会被持续和恢复

public GitItem(Parcel in) { 
     id = in.readInt(); 
     name = in.readString(); 
     full_name = in.readString(); 
     owner = in.readParcelable(GitItem.class.getClassLoader()); 
     // Add line to read owner object 
    } 

    public void writeToParcel(Parcel out, int flags){ 
     out.writeInt(id); 
     out.writeString(name); 
     out.writeString(full_name); 
     out.writeParcelable(owner , flags);   
     // Add line to write owner object 
    } 
+1

工程就像一个魅力! –

相关推荐

  • 带你玩转超级列表框 5 保存内容读取与选择性保存
  • 保存列表与Parcelable
  • 保存与流星的serialport列表
  • 如何添加列表与NpgsqlDataReader()C#
  • 创建一个Parcelable类与一个辅助构造函数,该函数将一个列表作为Kotlin中的参数
  • OpenGL旋转对象,同时保持它在屏幕中心
  • 恢复的视图状态属性
    • 网站免责声明 网站地图 最新文章 用户隐私 版权申明
    本站所有数据收集于网络,如果侵犯到您的权益,请联系网站进行下架处理。   

    Copyright © 2018-2021   Powered By 源码之家    备案号:   粤ICP备20058927号