简体   繁体   中英

Pass ArrayList from to Activity

I have an ArrayList of CustomInput objects and DataWrapper class with getter and setter for the ArrayList . I want to pass DataWrapper from Non-Activity class to Activity class. I have tried implementing Serializable, but I get Parcelable encountered ioexception writing serializable object cause by 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;
}
}

Non-Activiy class

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();

No need to create new class DataWrapper.java . Because ArrayList is serializable.

Non-Activiy class

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();

hi please check how we can send arraylist in intent

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

i assumed here data is already added in your arraylist, please check

Send data and start other activity,

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

Get data in your next activity,

ArrayList<HashMap<String, String>> aldata1;

and call this in your oncreate

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

hope this will help you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM