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