【问题标题】:How to implement parcelable in a class with a inner class too如何在具有内部类的类中实现 parcelable
【发布时间】:2017-02-26 13:02:16
【问题描述】:

这个类有一个内部类,那么如何将一个类与内部类打包?

public class UserModel 
{
    private User user;

    public User getUser() {
        return user;
    }

    public class User {
        @SerializedName("id")
        @Expose
        private int id;

        @SerializedName("first_name")
        @Expose
        private String first_name;

        @SerializedName("last_name")
        @Expose
        private String last_name;

        @SerializedName("email")
        @Expose
        private String email;

        @SerializedName("mobile_no")
        @Expose
        private String mobile_no;

        @SerializedName("created_at")
        @Expose
        private String created_at;

        @SerializedName("updated_at")
        @Expose
        private String updated_at;

        @SerializedName("user_role_id")
        @Expose
        private int user_role_id;

        public int getId() {
            return id;
        }

        public String getFirst_name() {
            return first_name;
        }

        public String getLast_name() {
            return last_name;
        }

        public String getEmail() {
            return email;
        }

        public String getMobile_no() {
            return mobile_no;
        }

        public String getCreated_at() {
            return created_at;
        }

        public String getUpdated_at() {
            return updated_at;
        }

        public int getUser_role_id() {
            return user_role_id;
        }
    }
}

【问题讨论】:

    标签: android android-studio parcelable


    【解决方案1】:

    你必须将内部类设为 Parcelable 或 Serializable

    public class UserModel implements Parcelable {
    
        private User user;
        public User getUser() {
            return user;
        }
    
        public class User implements Serializable{
    
    
            @SerializedName("id")
            @Expose
            private int id;
    
            @SerializedName("first_name")
            @Expose
            private String first_name;
    
            @SerializedName("last_name")
            @Expose
            private String last_name;
    
            @SerializedName("email")
            @Expose
            private String email;
    
            @SerializedName("mobile_no")
            @Expose
            private String mobile_no;
    
            @SerializedName("created_at")
            @Expose
            private String created_at;
    
            @SerializedName("updated_at")
            @Expose
            private String updated_at;
    
            @SerializedName("user_role_id")
            @Expose
            private int user_role_id;
    
            public int getId() {
                return id;
            }
    
            public String getFirst_name() {
                return first_name;
            }
    
            public String getLast_name() {
                return last_name;
            }
    
            public String getEmail() {
                return email;
            }
    
            public String getMobile_no() {
                return mobile_no;
            }
    
            public String getCreated_at() {
                return created_at;
            }
    
            public String getUpdated_at() {
                return updated_at;
            }
    
            public int getUser_role_id() {
                return user_role_id;
            }
        }
    
        protected UserModel(Parcel in) {
            user = (User) in.readValue(User.class.getClassLoader());
        }
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeValue(user);
        }
    
        @SuppressWarnings("unused")
        public static final Parcelable.Creator<UserModel> CREATOR = new Parcelable.Creator<UserModel>() {
            @Override
            public UserModel createFromParcel(Parcel in) {
                return new UserModel(in);
            }
    
            @Override
            public UserModel[] newArray(int size) {
                return new UserModel[size];
            }
        };
    }
    

    【讨论】:

    • @GowsikCristiano 如果它解决了您的问题,您可以投票或接受它。谢谢。
    【解决方案2】:

    您希望这两个类都实现Parcelable 接口。

    来源:this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 2015-04-05
      相关资源
      最近更新 更多