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");可以将for循环中i的上限设置高点,或者将setFileName中的字符串设置常些测试看看
原文:http://blog.csdn.net/fireworkburn/article/details/19402303