gpt4 book ai didi

android - 通过 Intent 发送 Arraylist

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:02 24 4
gpt4 key购买 nike

如何通过 Intent 从另一个 Activity 接收自定义的 ArrayList?例如,我在 Activity A 中有这个 ArrayList:

ArrayList<Song> songs;

如何在 Activity B 中获取此列表?

最佳答案

首先要了解的是,您使用 Intent 将信息从 Activity A 传递到 Activity B。对象,您可以在其中放置“额外内容”。您可以放入 Intent 的完整 list 可在此处获得:https://developer.android.com/reference/android/content/Intent.html (参见各种 putExtra() 方法,以及下面的 putFooExtra() 方法)。

由于您正在尝试传递 ArrayList<Song> ,您有两个选择。

第一个也是最好的是使用 putParcelableArrayListExtra() .要使用它,Song类必须实现 Parcelable界面。如果你控制了Song的源代码, 实现 Parcelable比较容易。您的代码可能如下所示:

Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putParcelableArrayListExtra("songs", songs);

第二种是使用 version of putExtra() that accepts a Serializable object .当您不控制 Song 的源代码时,您应该只使用此选项。 ,因此无法实现 Parcelable .您的代码可能如下所示:

Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putSerializableExtra("songs", songs);

这就是将数据放入 Intent 的方式在 Activity A 中。如何从 Intent 中获取数据?在 Activity B 中?

这取决于您在上面选择的选项。如果您选择第一个,您将编写如下所示的内容:

List<Song> mySongs = getIntent().getParcelableArrayListExtra("songs");

如果您选择了第二种,您将编写如下所示的内容:

List<Song> mySongs = (List<Song>) getIntent().getSerializableExtra("songs");

第一种技术的优点是速度更快(就您的应用程序对用户的性能而言)并且占用的空间更少(就您传递的数据大小而言)。

关于android - 通过 Intent 发送 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45446452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com