【问题标题】:How to pass List<CustomObject> through Intents如何通过 Intents 传递 List<CustomObject>
【发布时间】:2017-06-19 08:03:50
【问题描述】:

我有自定义对象的 ArrayList

ArrayList<AvailableCountry>
        listAvailableCountries = new ArrayList();

我有两个 AvailableCountry 对象

AvailableCountry obj1=new AvailableCountry();
AvailableCountry obj2=new AvailableCountry();

然后我已经添加到数组列表中

listAvailableCountries.add(obj1);
listAvailableCountries.add(obj2);

这是自定义对象的类

public class AvailableCountry {

@SerializedName("Disabled")
@Expose
private Boolean disabled;
@SerializedName("Selected")
@Expose
private Boolean selected;
@SerializedName("Text")
@Expose
private String text;
@SerializedName("Value")
@Expose
private String value;

public Boolean getDisabled() {
    return disabled;
}

public void setDisabled(Boolean disabled) {
    this.disabled = disabled;
}

public Boolean getSelected() {
    return selected;
}

public void setSelected(Boolean selected) {
    this.selected = selected;
}

public String getText() {
    return text;
}

public void setText(String text) {
    this.text = text;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

}

现在我想将这个数组列表从活动 A 传递给活动 B。 然后我想在活动 B 中接收。 我怎样才能完成这项任务。

【问题讨论】:

标签: java android list android-intent arraylist


【解决方案1】:

1) 首先实现自定义对象类的 Serializable 接口

public class AvailableCountry implements Serializable {

@SerializedName("Disabled")
@Expose
private Boolean disabled;
@SerializedName("Selected")
@Expose
private Boolean selected;
@SerializedName("Text")
@Expose
private String text;
@SerializedName("Value")
@Expose
private String value;

public Boolean getDisabled() {
    return disabled;
}

public void setDisabled(Boolean disabled) {
    this.disabled = disabled;
}

public Boolean getSelected() {
    return selected;
}

public void setSelected(Boolean selected) {
    this.selected = selected;
}

public String getText() {
    return text;
}

public void setText(String text) {
    this.text = text;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

}

2) 将 arrayList 从 A 类发送到 B 类

Intent intent =new Intent(A.this,B.class);
intent.putExtra("listCountry", (Serializable) listAvailableCountries);
startActivity(intent)

3) 接收B类中的arraylist

ArrayList<AvailableCountry>listAvailableCountries = (ArrayList<AvailableCountry>) getIntent().getSerializableExtra("listCountry");

【讨论】:

  • 如果我的回答有效,请不要忘记点赞。
  • 你太棒了,先生。你拯救了我的一天。
  • 非常感谢
【解决方案2】:

使用 Gson 我们可以轻松共享数据

compile 'com.google.code.gson:gson:2.4'

在 A.class 中这样发送

 Intent intent = new Intent(A.this, B.class);
    String favJSONString = new Gson().toJson(listAvailableCountries);
    intent.putExtra("listAvailableCountries", favJSONString);
    startActivity(intent);

并像这样接收 B.class

try {
        Type type = new TypeToken<List<AvailableCountry>>() {
        }.getType();
        ArrayList<AvailableCountry> listAvailableCountries  = new Gson().fromJson(getIntent().getStringExtra("listAvailableCountries"), type);
    } catch (Exception e) {
        e.printStackTrace();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2012-06-28
    相关资源
    最近更新 更多