activtiy之间通过Intent传递数据,但是一般只能传递基本类型的,下面给出传递列表的方法:
1.要传递的类,需要实现Parcelable接口
package com.yyu.utils;
import android.os.Parcel;
import android.os.Parcelable;
public class MyFileInfor implements Parcelable
{
/*文件名字*/
private String fileName = null;
/*文件绝对路径*/
private String fileUrl = null;
/*文件大小*/
private long fileSize = 0;
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public void setFileUrl(String fileUrl)
{
this.fileUrl = fileUrl;
}
public void setFileSize(long fileSize)
{
this.fileSize = fileSize;
}
public String getFileName()
{
return fileName;
}
public String getFileUrl()
{
return fileUrl;
}
public long getFileSize()
{
return fileSize;
}
public static final Parcelable.Creator<MyFileInfor> CREATOR = new Creator<MyFileInfor>()
{
@Override
public MyFileInfor createFromParcel(Parcel source)
{
// TODO Auto-generated method stub
MyFileInfor fileInfor = new MyFileInfor();
fileInfor.setFileName(source.readString());
fileInfor.setFileUrl(source.readString());
fileInfor.setFileSize(source.readLong());
return fileInfor;
}
@Override
public MyFileInfor[] newArray(int size)
{
// TODO Auto-generated method stub
return new MyFileInfor[size];
}
};
/**
*callbacks
*/
@Override
public int describeContents()
{
// TODO Auto-generated method stub
return 0;
}
/**
*callbacks
*/
@Override
public void writeToParcel(Parcel dest, int flags)
{
// TODO Auto-generated method stub
dest.writeString(fileName);
dest.writeString(fileUrl);
dest.writeLong(fileSize);
}
}
2.填充列表
ArrayList<MyFileInfor> fileList = new ArrayList<MyFileInfor>();//列表必须用ArrayList定义
for(int i=0;i<2000;i++)
{
MyFileInfor infor = new MyFileInfor();
Parcel parcel = Parcel.obtain();
infor = MyFileInfor.CREATOR.createFromParcel(parcel);
infor.setFileName("" + i);
fileList.add(infor);
//parcel.recycle();//不能回收,否则接收出错
}
3.发送
Intent intent = new Intent();
intent.putParcelableArrayListExtra("list", fileList);
intent.setClass(MainActivity.this, SecondTest.class);
startActivity(intent);
4.接收
List<MyFileInfor> tempList = getIntent().getParcelableArrayListExtra("list");
以上就是activity直接传递列表的方法,需要注意的是,用Intent传递数据的时候,所装载的数据最大只有40K,超过这个值就会内存溢出,
可以将for循环中i的上限设置高点,或者将setFileName中的字符串设置常些测试看看