关键词:
【中文标题】将列表从一个活动传递到另一个活动【英文标题】:Passing a List from one Activity to another 【发布时间】:2012-07-05 15:32:45 【问题描述】:如何通过 Intent 的 putExtra 方法将 ArrayList
等集合从一个 Activity
传递到另一个集合?
谁能帮助我,因为我想将List<String>
从一个Activity
传递给另一个?
【问题讨论】:
发帖前请先搜索一下; ***.com/… Please See this Blog. This Can Help You 【参考方案1】:如果E
类型是Serializable
,您可以以同样的方式传递ArrayList<E>
。
您可以调用Intent
的putExtra (String name, Serializable value)
进行存储,调用getSerializableExtra (String name)
进行检索。
例子:
ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);
在另一个活动中:
ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");
请注意,序列化可能会导致性能问题:它需要时间,并且会分配大量对象(因此必须进行垃圾回收)。
【讨论】:
+1 提到 E 必须是可序列化的,其他人似乎忘记提及了。 值得一提的是,List
接口没有扩展Serializable
,因此如果您的集合是由接口声明的,则必须先将其转换为特定的实现。
注:-intent.putExtra("mylist", (Serializable)myList);为我工作!
@MindRoasterMir 不客气,不,它也适用于自定义类列表
@iamkdblue 你写的我也这么说,可能是我的评论表述不正确。我是说接受的 asnwer 不适用于自定义类 List,而且还提到自定义类必须实现 Serializable 否则它将无法工作。谢谢【参考方案2】:
首先你需要创建一个 Parcelable 对象类,看例子
public class Student implements Parcelable
int id;
String name;
public Student(int id, String name)
this.id = id;
this.name = name;
public int getId()
return id;
public String getName()
return name;
@Override
public int describeContents()
// TODO Auto-generated method stub
return 0;
@Override
public void writeToParcel(Parcel dest, int arg1)
// TODO Auto-generated method stub
dest.writeInt(id);
dest.writeString(name);
public Student(Parcel in)
id = in.readInt();
name = in.readString();
public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>()
public Student createFromParcel(Parcel in)
return new Student(in);
public Student[] newArray(int size)
return new Student[size];
;
还有名单
ArrayList<Student> arraylist = new ArrayList<Student>();
来自调用活动的代码
Intent intent = new Intent(this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("mylist", arraylist);
intent.putExtras(bundle);
this.startActivity(intent);
调用活动的代码
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bundle bundle = getIntent().getExtras();
ArrayList<Student> arraylist = bundle.getParcelableArrayList("mylist");
【讨论】:
工作就像一个魅力,一个小时后我得到了这个,非常感谢哥们。 使用可序列化比这个更好,但它对某人有好处。 +1 @HarishReddy 你能解释一下为什么使用可序列化更好吗?我认为 Parcelable 在性能方面比可序列化更好。 因为它在订单基础上工作,因为值在writeToParcel
中给出。是否有任何机制可以根据密钥从Parcel
对象获取值?例如,如果在课堂上我们有多个字符串字段,那么我们如何才能知道我们从 Student(Parcel in)
中的 Parcel
得到哪个字符串。
@HarishReddy:使用 Serializable 可以实现更简单的实现,但使用 Parcelable 可以提供更好的性能。哪个更好取决于具体情况:如果 Serializable 在您的用例中提供的性能足够,那么您应该更喜欢更简单的方法。但是,如果在您的用例中使用 Serializable 太慢,您应该尝试使用 Parcelable。【参考方案3】:
使用putExtra
将值传递给意图。使用getSerializableExtra
方法检索数据
像这样
活动 A:
ArrayList<String> list = new ArrayList<String>();
intent.putExtra("arraylist", list);
startActivity(intent);
活动 B:
ArrayList<String> list = getIntent().getSerializableExtra("arraylist");
【讨论】:
嗨 RajaReddy,我将数组列表 A 活动传递给 B 活动。 B 活动我更改了一个值并返回到 A 活动值不变。请帮帮我 返回 B 活动时,您必须将数据从 B 传递到 A.. 或将该数组设为全局数组并从 B 活动更新。 就我而言,我可以选择参加 C 活动。在那种情况下,我如何更新数组列表? 然后在应用程序类中将其设置为全局...并在您想使用的任何地方更新和使用 感谢您的提示。如果可能的话,给我你的邮件ID,我会通过电子邮件提出疑问。【参考方案4】:我尝试了所有建议的技术,但都没有奏效并阻止我的应用程序运行,然后我终于成功了。这就是我是如何做到的...... 在主要活动中,我这样做了:
List<String> myList...;
Intent intent = new Intent...;
Bundle b=new Bundle();
b.putStringArrayList("KEY",(ArrayList<String>)myList);
intent_deviceList.putExtras(b);
....startActivity(intent);
在新的Activity中获取数据:
List<String> myList...
Bundle b = getIntent().getExtras();
if (b != null)
myList = bundle.getStringArrayList("KEY");
我希望这会对某人有所帮助...
【讨论】:
【参考方案5】:要将 ArrayList 从一个活动传递到另一个活动,应该包括
intent.putStringArrayListExtra(KEY, list); //where list is ArrayList which you want to pass
在开始活动之前。并在另一个活动中获取 ArrayList 包括
Bundle bundle = getIntent().getExtras();
if (bundle != null)
temp = bundle.getStringArrayList(KEY); // declare temp as ArrayList
您将能够通过此传递 ArrayList。希望这对您有所帮助。
【讨论】:
【参考方案6】:使用 ViewModel 比 Serializable 或 Parcelable 更有效
【讨论】:
如何将 LatLng 的数组列表从一个活动传递到另一个活动
】如何将LatLng的数组列表从一个活动传递到另一个活动【英文标题】:HowtopassanarrylistofLatLngfromoneactivitytoanother【发布时间】:2015-09-0509:41:26【问题描述】:我想通过按钮单击将ArrayList的LatLng变量从一个Activity传递给另一个。String... 查看详情
当我单击列表视图的操作项时,将文本从列表视图传递到另一个活动
】当我单击列表视图的操作项时,将文本从列表视图传递到另一个活动【英文标题】:PassingTextFromListviewtoanotherActivitywhenIclickactionitemofthelistview【发布时间】:2013-03-1015:04:59【问题描述】:我的主要活动中有一个列表视图。在每... 查看详情
如何将数据从 sqlite 数据库传递到另一个活动?
...我有一个包含列id,eng,kurd,ar的数据库,并从中填充了一个列表视图,该列表视图仅显示数据库中的eng。当用户单击列表视图中的项目时,我想传递具有相同id的eng,kurd,ar,但是当我单击一个项目时, 查看详情
如何将整数从一个活动传递到另一个活动?
】如何将整数从一个活动传递到另一个活动?【英文标题】:HowtopassintegerfromoneActivitytoanother?【发布时间】:2011-10-2719:05:03【问题描述】:我想将一个整数的新值从一个活动传递到另一个活动。即:活动B包含一个integer[]pics=R.drawa... 查看详情
将图像从活动传递到另一个活动?
】将图像从活动传递到另一个活动?【英文标题】:Passingimagefromactivitytoanotheractivity?【发布时间】:2012-03-0523:12:19【问题描述】:我正在尝试拍照,我想将这张照片传递给另一个活动以在其中显示。OnClickListenerlistener_TakePic=newOnCl... 查看详情
我如何将数据从一个活动传递到另一个活动
】我如何将数据从一个活动传递到另一个活动【英文标题】:howipassdatafromoneactivitytoanotheractivity【发布时间】:2015-12-3120:26:37【问题描述】:packagecom.example.assignmentone;importjava.util.ArrayList;importandroid.R.integer;importandroid.app.Activity;impor... 查看详情
如何将用户定义的对象从一个活动传递到另一个活动[重复]
】如何将用户定义的对象从一个活动传递到另一个活动[重复]【英文标题】:howtopassauserdefinedobjectfromoneactivitytoanother[duplicate]【发布时间】:2012-10-1122:35:31【问题描述】:可能重复:HowtopassobjectfromoneactivitytoanotherinAndroid我想将一... 查看详情
java示例代码_将字符串从一个活动传递到另一个活动
java示例代码_将字符串从一个活动传递到另一个活动 查看详情
将数据从列表视图(从 Rest Api 生成)传递到另一个活动并将其保存到 SQLite 数据库中
】将数据从列表视图(从RestApi生成)传递到另一个活动并将其保存到SQLite数据库中【英文标题】:passDatafromaListView(generatedfromRestApi)toanotheractivityandsavethatintoSQLiteDatabase【发布时间】:2016-11-0115:24:11【问题描述】:我正在使用RESTap... 查看详情
无法将类的对象从一个活动传递到另一个活动? [复制]
】无法将类的对象从一个活动传递到另一个活动?[复制]【英文标题】:Unabletopassanobjectofaclassfromoneactivitytoanother?[duplicate]【发布时间】:2013-08-1113:18:53【问题描述】:在传递类中传递对象的代码finalArrayList<SongDetails>Songinfo=get... 查看详情
Android:将信息从一个活动传递到另一个[重复]
】Android:将信息从一个活动传递到另一个[重复]【英文标题】:Android:Passinformationfromoneactivitytoanother[duplicate]【发布时间】:2018-01-1314:23:39【问题描述】:我正在尝试将信息(更具体地说是带有信息的类)从一个活动传递到另一... 查看详情
如何将不可打包的对象从活动传递到另一个活动?
】如何将不可打包的对象从活动传递到另一个活动?【英文标题】:Howtopassnonparcelableobjectstofromactivitytoanotheractivity?【发布时间】:2016-01-0521:19:04【问题描述】:我有两个对象从两个不同的类实例化,两个类都没有实现parcelable或s... 查看详情
我们可以将 soundpool id 从一个活动传递到另一个活动吗?
】我们可以将soundpoolid从一个活动传递到另一个活动吗?【英文标题】:Canwepasssoundpoolidfromoneactivitytoother?【发布时间】:2012-06-1309:40:58【问题描述】:我是安卓新手。我正在开发一个应用程序,我需要为不同的活动加载许多声音... 查看详情
如何将值从一个活动中的片段传递到另一个活动? [复制]
】如何将值从一个活动中的片段传递到另一个活动?[复制]【英文标题】:Howtopassvaluesfromfragmentsinoneactivitytoanotheractivity?[duplicate]【发布时间】:2021-08-0202:23:47【问题描述】:我正在一个有两个活动的应用程序中做一个小测验。一... 查看详情
使用捆绑将数据从一个活动传递到另一个活动 - 不在第二个活动中显示
】使用捆绑将数据从一个活动传递到另一个活动-不在第二个活动中显示【英文标题】:Passingdatafromoneactivitytoanotherusingbundle-notdisplayinginsecondactivity【发布时间】:2013-03-0422:07:16【问题描述】:我目前正在尝试获取通过RESTAPI调用获... 查看详情
将包含其他自定义对象的对象列表从一个活动发送到另一个活动
】将包含其他自定义对象的对象列表从一个活动发送到另一个活动【英文标题】:Sendlistofobjectswhichcontainothercustomobjectsfromoneactivitytoanother【发布时间】:2014-12-0508:15:37【问题描述】:这是我的班级,我想将其列表发送到另一个活... 查看详情
如何将 ArrayList<Custom Object> 从一个活动传递到另一个活动? [复制]
】如何将ArrayList<CustomObject>从一个活动传递到另一个活动?[复制]【英文标题】:HowtopassArrayList<CustomeObject>fromoneactivitytoanother?[duplicate]【发布时间】:2014-02-1014:05:37【问题描述】:我想将FollowArrayList从一个活动发送到另... 查看详情
android-将toast从一个活动传递到另一个活动(代码片段)
不确定这是否有效但我正在尝试从CustomerCall活动向RiderHome活动发送Toast消息。一旦司机选择取消。需要将Toast发送到RiderHome活动,说“驱动程序已取消请求”可以这样做吗?CustomerCallbtnCancel=(Button)findViewById(R.id.btnDecline);btnCancel.setO... 查看详情