【问题标题】:Read and write array of own type in parcel in android在android中的parcel中读写自己类型的数组
【发布时间】:2015-09-18 16:56:06
【问题描述】:

我想创建对象以从包裹响应中写入和读取:

{"optionType":["POWER"],"results":[{"type":"POWER","options":[{"value":"130.0 KW"}]},{"type":"POWER","options":[{"value":"130.0 KW"}]},{"type":"POWER","options":[{"value":"110.0 KW"}]},{"type":"POWER","options":[{"value":"130.0 KW"}]}]}

我创建了两个类:

import android.os.Parcel;
import android.os.Parcelable;

import java.util.ArrayList;


public class ResultsOptionsCarIdent implements Parcelable {
    private String type;
    private String[] options;

    public ResultsOptionsCarIdent(String type, String[] options) {
        this.type = type;
        this.options = options;

    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String[] getOptions() {
        return options;
    }

    public void setOptions(String[] options) {
        this.options = options;
    }

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

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

    private ResultsOptionsCarIdent(Parcel in) {
        this.type = in.readString();
        this.options = in.createStringArray();

    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(type);
        dest.writeStringArray(options);
    }
}

我开始创建第二个,但我坚持如何为 ResultsOptionsCarIdent 提供包裹列表:

import android.os.Parcel;
import android.os.Parcelable;

import java.util.ArrayList;


public class OptionTypes implements Parcelable {

    private String[] optionTypes;
    private ResultsOptionsCarIdent[] results;

    public OptionTypes(String[] optionTypes, ResultsOptionsCarIdent[] results) {
        this.optionTypes = optionTypes;
        this.results = results;

    }

    public String[] getOptionTypes() {
        return optionTypes;
    }

    public void setOptionTypes(String[] optionTypes) {
        this.optionTypes = optionTypes;
    }

    public ResultsOptionsCarIdent[] getResults() {
        return results;
    }

    public void setResults(ResultsOptionsCarIdent[] results) {
        this.results = results;
    }

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

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

    private OptionTypes(Parcel in) {
        this.optionTypes = in.createStringArray();
        this.results = //in.createStringArray();

    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeStringArray(type);
        dest.writeStringArray(results);
    }
}

你能帮我写和读dest.writeStringArray(results);this.results = //in.createStringArray();

【问题讨论】:

标签: android


【解决方案1】:

使用 writeTypedArray() 和 createTypedArray()。

此外,您的选项是模型中的字符串数组,而 json 中显然是键值对列表。您可能应该使用 2 个数组(一个用于键,一个用于值)或类似地图的 Bundle。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2013-02-04
    • 2020-01-04
    相关资源
    最近更新 更多