首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Intent将arrayList传递到下一个活动

使用Intent将arrayList传递到下一个活动
EN

Stack Overflow用户
提问于 2014-09-10 14:00:56
回答 5查看 959关注 0票数 0

我正在处理一个任务,因为我想使用Intent将数组列表传递给下一个活动。我想在列表视图中显示我也创建了一个适配器的数据,但问题是如何在意图中传递数组列表。

代码语言:javascript
复制
private ArrayList<ImageModel> test(){

    ArrayList results = new ArrayList();

    ImageModel newsData = new ImageModel();

    newsData.setQuestions("Q1.who belongs to melanistic color variant of any Panthera species");
    newsData.setImageView(R.drawable.ic_blackpanther);
    results.add(newsData);

    newsData = new ImageModel();

    newsData.setQuestions("Q2.who can run faster than any other land animal");
    newsData.setImageView(R.drawable.ic_chita);
    results.add(newsData);

    newsData = new ImageModel();

    newsData.setQuestions("Q3.who is belongs to family Elephantidae and the order Proboscidea");
    newsData.setImageView(R.drawable.ic_elephant);
    results.add(newsData);

    newsData = new ImageModel();

    newsData.setQuestions("Q4.Which animal is historically used in warfare");
    newsData.setImageView(R.drawable.ic_horse);
    results.add(newsData);

    newsData = new ImageModel();

    newsData.setQuestions("Q5.Which animal is united by their distinctive black and white stripes on his body");
    newsData.setImageView(R.drawable.ic_zebra);
    results.add(newsData);


    return results;
}
EN

回答 5

Stack Overflow用户

发布于 2014-09-10 14:18:08

您可以使用parcelabale传递arraylist。您可以通过parcelable传递任何对象。将您的arraylist包装在parcelable中,并将其作为附加内容传递,在其他活动中,您可以获取parcelable和值。您可以在三个steps..Parcelable中完成它,这比可序列化要好得多,因为许多reasons...for都知道这个link

1.数组列表的示例可打包类

代码语言:javascript
复制
public class SampleParcelable implements Parcelable {
    String carName;
    String modelNumber;
    String carMake;
    int carPrice;

    public String getCarName() {
        return carName;
    }

    public void setCarName(String carName) {
        this.carName = carName;
    }

    public String getModelNumber() {
        return modelNumber;
    }

    public void setModelNumber(String modelNumber) {
        this.modelNumber = modelNumber;
    }

    public String getmMake() {
        return carMake;
    }

    public void setmMake(String mMake) {
        this.carMake = mMake;
    }

    public int getPrice() {
        return carPrice;
    }

    public void setPrice(int price) {
        carPrice = price;
    }

    @Override
    public int describeContents() {

        return 0;
    }

    public static final Parcelable.Creator<SampleParcelable> CREATOR = new Creator<SampleParcelable>() {

        public SampleParcelable createFromParcel(Parcel source) {

            SampleParcelable mBook = new SampleParcelable();
            mBook.carName = source.readString();
            mBook.carMake = source.readString();
            mBook.modelNumber = source.readString();
            mBook.carPrice = source.readInt();
            return mBook;

        }

        public SampleParcelable[] newArray(int size) {

            return new SampleParcelable[size];

        }

    };

    @Override
    public void writeToParcel(Parcel mParcel, int flags) {
        mParcel.writeString(carName);
        mParcel.writeString(modelNumber);
        mParcel.writeString(carMake);
        mParcel.writeInt(carPrice);
    }

}

2.打包到意图

代码语言:javascript
复制
Intent pIntent = new Intent(this, SecondActivity.class);
Bundle pBundle = new Bundle();
pBundle.putParcelable(PAR_KEY, mCar);
pIntent.putExtras(pBundle);

//starting next Activity with intent
startActivity(pIntent);

3.从第二个活动中的对象获取包

代码语言:javascript
复制
SampleParcelable mObjCar =(SampleParcelable)getIntent().getParcelableExtra(FirstActivity.PAR_KEY);

github中的此将帮助您更多...

票数 1
EN

Stack Overflow用户

发布于 2014-09-10 14:09:24

使ImageModel类实现Serializable接口。然后将arraylist作为额外参数传递:

代码语言:javascript
复制
Intent intent = new Intent(getApplicationContext(), MyActivityClass.class);
    intent.putExtra("list", results);
    startActivity(intent);

然后在您的活动的onCreate()中,您可以检索数据:

代码语言:javascript
复制
ArrayList<ImageModel> list = (ArrayList<ImageModel>)getIntent().getSerializableExtra("list");

希望能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2014-09-10 14:09:33

要么让你的arraylist可序列化serializable,要么让它的内容可序列化,这样你就可以把你的arraylist通过捆绑包发送给下一个intent。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25758298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档