博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activity 间传递 ArrayList
阅读量:6791 次
发布时间:2019-06-26

本文共 5629 字,大约阅读时间需要 18 分钟。

转自:
Activity之间简单的数据传递,可能经常用,今天遇到要传递一个ArrayList<MyClass>的问题。


花费了一点时间搞定,也学习了一些东西。再次记录以下。



1. 使用 Serializable 方法

   将类的实例序列化然后再做存储或者传输在JAVA中较为常见,在Android也可用。

    具体看代码吧,比较简单。
public class MyClass implements Serializable{        private static final long serialVersionUID = 1L;        public String userName;        public String psw;        public int age;}
一个自定义类,实现Serializable接口。
findViewById(R.id.send_arraylist_button).setOnClickListener(new Button.OnClickListener() {                                                @Override                        public void onClick(View v) {                                // TODO Auto-generated method stub                                                                ArrayList
arrayList = new ArrayList
(); for (int i = 0; i < 10; i++) { MyClass myClass = new MyClass(); myClass.userName = "a" + i; myClass.psw = "b" + i; myClass.age = 10 + i; arrayList.add(myClass); } Intent intent = new Intent(); intent.putExtra("key", arrayList); intent.setClass(MainActivity.this, ResultActivity.class); startActivity(intent); } });
一个Activity中传递。
ArrayList
arrayList = (ArrayList
) getIntent().getSerializableExtra("key"); String result = "" ; for (MyClass myClass : arrayList) { result += myClass.userName + "--" + myClass.psw + "--" + myClass.age + "\n"; } ((TextView)findViewById(R.id.show_result_textview)).setText(result);
另一个Activity中接收
2. 使用Parcelable 方法

  Android内存受限,迫使其封装了Parcel容器来替代Serializable方法。

  代码中做了一些注释,这里就不再解释了。
/*** Parcel类:http://developer.android.com/reference/android/os/Parcel.html 
* 封装数据的容器,封装后的数据可以通过Intent或IPC传递
* * Parcelable接口:http://developer.android.com/reference/android/os/Parcelable.html
* 自定义类继承该接口后,其实例化后能够被写入Parcel或从Parcel中恢复。
* * 如果某个类实现了这个接口,那么它的对象实例可以写入到 Parcel 中,并且能够从中恢复,* 并且这个类必须要有一个 static 的 field ,并且名称要为 CREATOR ,这个 field 是某个实现了 Parcelable.Creator 接口的类的对象实例。*/public class MyClass2 implements Parcelable{ public String userName; public String psw; public int age; //静态的Parcelable.Creator接口 public static final Parcelable.Creator
CREATOR = new Creator
() { //创建出类的实例,并从Parcel中获取数据进行实例化 public MyClass2 createFromParcel(Parcel source) { MyClass2 myClass2 = new MyClass2(); myClass2.userName = source.readString(); myClass2.psw = source.readString(); myClass2.age = source.readInt(); return myClass2; } public MyClass2[] newArray(int size) { // TODO Auto-generated method stub return new MyClass2[size]; } }; // @Override public int describeContents() { // TODO Auto-generated method stub return 0; } //将数据写入外部提供的Parcel中 @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub dest.writeString(userName); dest.writeString(psw); dest.writeInt(age); }}
一个自定义类,注释中又说明,看代码。
//use Parcelable        findViewById(R.id.send_arraylist_button).setOnClickListener(new Button.OnClickListener() {                                                @Override                        public void onClick(View v) {                                // TODO Auto-generated method stub                                                                ArrayList
arrayList = new ArrayList
(); for (int i = 0; i < 10; i++) { MyClass2 myClass2 = new MyClass2(); myClass2.userName = "a" + i; myClass2.psw = "b" + i; myClass2.age = 10 + i; arrayList.add(myClass2); } Intent intent = new Intent(); intent.putParcelableArrayListExtra("key", arrayList); intent.setClass(MainActivity.this, ResultActivity.class); startActivity(intent); } });
发送
//use Parcelable                ArrayList
arrayList = (ArrayList
) getIntent().getSerializableExtra("key"); String result = "" ; for (MyClass2 myClass2 : arrayList) { result += myClass2.userName + "--" + myClass2.psw + "--" + myClass2.age + "\n"; } ((TextView)findViewById(R.id.show_result_textview)).setText(result);
接收。

转载于:https://www.cnblogs.com/sesexxoo/archive/2013/01/22/6189967.html

你可能感兴趣的文章
作为架构师,你必需要搞清楚的概念:POJO、PO、DTO、DAO、BO、VO
查看>>
golang-web框架revel一个表单提交的总结
查看>>
PHP 根据IP获取地理位置
查看>>
如何设置同一单据的单据头字段各行合并显示吗?
查看>>
HAProxy负载均衡代理
查看>>
Velocity入门指南
查看>>
LNMP架构搭建论坛(三)
查看>>
有关jdk和oracle和eclipse问题
查看>>
为什么 Redis 单线程能支撑高并发?
查看>>
程序员都会的 35 个 jQuery 小技巧
查看>>
2019年全国各地挖掘机司机(机手)工资待遇怎样?
查看>>
pdf怎么转换成jpg?转换质量高的方法
查看>>
day13 static 关键字
查看>>
我的友情链接
查看>>
oracle proc 详解
查看>>
sqlserver与mysql数据同步问题
查看>>
交换机端口镜像配置说明
查看>>
Wireshark 检索命令
查看>>
Iterator(迭代器)-对象行为型模式
查看>>
建立空连接
查看>>