将 ArrayList 传递给 Activity

Posted

技术标签:

【中文标题】将 ArrayList 传递给 Activity【英文标题】:Pass ArrayList from to 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。 我已经添加了我的答案可以尝试一次 【参考方案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");

希望这会对你有所帮助。

【讨论】:

以上是关于将 ArrayList 传递给 Activity的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ArrayList 从 Java 类传递给 jsp

如何将arraylist传递给onClick的方法

SQL Server (2008) 将 ArrayList 或字符串传递给 SP 用于 IN()

如何将 ArrayList 项传递给 Flutter 中的 http 请求(post)正文?

Android 将 ArrayList<Model> 从 Activity 传递给 Fragment

Swift 3 将 ArrayList 对象变量传递给字符串数组