【问题标题】:Pass ArrayList from to Activity将 ArrayList 传递给 Activity
【发布时间】:2017-01-25 14:03:52
【问题描述】:

我有一个ArrayListCustomInput 对象和DataWrapper 类,其中包含ArrayList 的getter 和setter。我想将DataWrapper 从非活动类传递到活动类。我已经尝试实现 Serializable,但我得到 Parcelable 遇到 ioexception 写入可序列化对象 原因是 NotSerializableException

DataWrapper.java

public class DataWrapper implements Serializable {
    private static final long serialVersionUID = 1L;
private ArrayList<CustomInput> customInputs;

public void setFields(ArrayList<CustomInput> data) {
    this.customInputs = data;
}

public ArrayList<CustomInput> getFields() {
    return this.customInputs;
}
}

非活动类

public void showActivity() {
    Intent intent = new Intent(request, ActivityKorak.class);
    intent.putExtra("title", title);
    DataWrapper dw = new DataWrapper();
    dw.setFields(fields);
    intent.putExtra("data", dw);

    request.startActivity(intent);
}

ActivityKorak.class->onCreate()

    Intent intent = getIntent();
    String title = intent.getStringExtra("title");
    DataWrapper dw = (DataWrapper) intent.getSerializableExtra("data");
    ArrayList<CustomInput> fields = dw.getFields();

【问题讨论】:

  • 你好为什么在Serializable中创建数组列表。它会自动以数组的形式工作。
  • 如果你想使用 Serializable,那么我将举例说明它是如何工作的
  • 我只想将ArrayList传递给Activity,不必使用DataWrapper。
  • 我已经添加了我的答案可以尝试一次

标签: android android-intent android-activity arraylist serializable


【解决方案1】:

无需创建新类DataWrapper.java。因为 ArrayList 是可序列化的。

非活动类

public void showActivity() {
    Intent intent = new Intent(request, ActivityKorak.class);
    intent.putExtra("title", title);
    intent.putExtra("data", fields);

    request.startActivity(intent);
}

ActivityKorak.class->onCreate()

    Intent intent = getIntent();
    String title = intent.getStringExtra("title");
    DataWrapper dw = (DataWrapper) intent.getSerializableExtra("data");
    ArrayList<CustomInput> fields = dw.getFields();

【讨论】:

    【解决方案2】:

    您好,请检查我们如何发送 arraylist

    ArrayList<HashMap<String, String>> aldata = new ArrayList<HashMap<String, String>>();
    

    我假设这里的数据已经添加到您的数组列表中,请检查

    发送数据并开始其他活动,

    Intent intent = new Intent(this,AbcActivity.class);
    intent.putExtra("aldata", aldata_TaxiLine);
    startActivity(intent);
    

    在您的下一个活动中获取数据,

    ArrayList<HashMap<String, String>> aldata1;
    

    并在你的 oncreate 中调用它

        aldata = (ArrayList<HashMap<String, String>>) getIntent()
                .getSerializableExtra("aldata");
    

    希望这会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-03-13
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 2017-02-13
      • 2018-10-02
      • 2016-07-01
      • 2016-01-14
      • 1970-01-01
      相关资源
      最近更新 更多