gpt4 book ai didi

java - 如何为双ArrayList实现Parcelable?

转载 作者:行者123 更新时间:2023-12-02 09:13:58 24 4
gpt4 key购买 nike

我得到了一个包含 double 组和另一个字符串数组的 JSON。我正在尝试使用相关方法创建一个 Parcelable 模型类。自动创建方法时,不会创建 double 组列表的行。

我查找了相关问题和信息,但令人惊讶的是,没有找到。我还添加了一个应该有帮助的 jar 文件:android-parcelable-intellij-plugin.jar。不知道它应该做什么,也找不到有关如何使用它的信息。

我的问题是我应该在方法中编写什么才能获取列表中的 double 组。

代码:

public class Country implements Parcelable {
...
private List<String> timezones;
private List<Double> latlng;

protected Country(Parcel in) {
timezones = in.createStringArrayList();
this.latlng = new ArrayList<>(); // from jsonschema2pojo.org
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringList(timezones);
//nothing for the double array
}

public List<Double> getLatlng() {
return latlng;
}

public void setLatlng(List<Double> latlng) {
this.latlng = latlng;
}

public List<String> getTimezones() {
return timezones;
}

public void setTimezones(List<String> timezones) {
this.timezones = timezones;
}

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

public static final Creator<Country> CREATOR = new Creator<Country>() {
@Override
public Country createFromParcel(Parcel in) {
return new Country(in);
}

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

谢谢。

最佳答案

试试下面这个,它对我有用:

public class Country implements Parcelable {

private List<String> timezones;
private List<Double> latlng;

public Country(List<String> timezones, List<Double> latlng) {
this.timezones = timezones;
this.latlng = latlng;
}

protected Country(Parcel in) {
timezones = in.createStringArrayList();
double[] doubleArray = in.createDoubleArray();
latlng = new ArrayList<>();
if (doubleArray != null) {
for (double ele : doubleArray) {
latlng.add(ele);
}
}
}

public static final Creator<Country> CREATOR = new Creator<Country>() {
@Override
public Country createFromParcel(Parcel in) {
return new Country(in);
}

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

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

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringList(timezones);
double[] doubleArray = new double[latlng == null ? 0 : latlng.size()];
for (int i=0, len=latlng.size(); i<len; i++) {
doubleArray[i] = latlng.get(i);
}
dest.writeDoubleArray(doubleArray);
}

@Override
public String toString() {
return "Country{" +
"timezones=" + timezones +
", latlng=" + latlng +
'}';
}
}

关于java - 如何为双ArrayList实现Parcelable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59153188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com