Android经过Intent传输包含自定义类的ArrayList
Android通过Intent传输包含自定义类的ArrayList
前言
Serializable
Example
package javastudy;
import java.io.Serializable;
public class Person implements Serializable {
	private static final long serialVersionUID = -6470574927973900913L;
	private String firstName;
	private String secondName;
	// example for transinet
	private transient String noSerializableString;
	public Person(String firstName, String secondName, String noSerializableString) {
		super();
		this.firstName = firstName;
		this.secondName = secondName;
		this.noSerializableString = noSerializableString;
	}
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getSecondName() {
		return secondName;
	}
	public void setSecondName(String secondName) {
		this.secondName = secondName;
	}
	public String getNoSerializableString() {
		if (noSerializableString != null) {
			return noSerializableString;
		} else {
			return "";
		}
	}
	public void setNoSerializableString(String noSerializableString) {
		this.noSerializableString = noSerializableString;
	}
	public String toString() {
		return "Person [ first name :" + getFirstName() + ", second name :" + getSecondName() + ", no serializable :"
				+ getNoSerializableString() + "]";
	}
}再写一个类,用于实现对象的序列化和反序列化
package javastudy;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class TestSerializable {
	public static void main(String[] args) {
		Person person = new Person("Wang", "Zhengyi", "Genius");
		String fileName = "/tmp/person.out";
		// save object to file
		FileOutputStream fos = null;
		ObjectOutputStream out = null;
		try {
			fos = new FileOutputStream(fileName);
			out = new ObjectOutputStream(fos);
			out.writeObject(person);
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		// read object from file
		FileInputStream fin = null;
		ObjectInputStream in = null;
		try {
			fin = new FileInputStream(fileName);
			in = new ObjectInputStream(fin);
			Person p = (Person) in.readObject();
			System.out.println(p);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (fin != null) {
				try {
					fin.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (in != null) {
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}Intent传输包含自定义类的ArrayList
// Intent Creation and Initialization
Intent passIntent = new Intent();
passIntent.setClass(MainActivity.this, SecondaryActivity.class);
                 
// Create custom class Object
Person p1 = new Person("Wang", "Zhengyi", "first");
Person p2 = new Person("Chen", "Shan", "second");
                 
// Create Array List of custom Class and add the Created object
ArrayList<Person> aListClass = new ArrayList<Person>();
aListClass.add(p1);
aListClass.add(p2);
                 
// Create a Bundle and Put Bundle in to it
Bundle bundleObject = new Bundle();
bundleObject.putSerializable("key", aListClass);
                 
// Put Bundle in to Intent and call start Activity
passIntent.putExtras(bundleObject);
startActivity(passIntent);第二个接收ArrayList的Activity关键代码如下:
try{
    // Get the Bundle Object        
    Bundle bundleObject = getIntent().getExtras();
             
        // Get ArrayList Bundle
    ArrayList<Person> classObject = (ArrayList<Person>) bundleObject.getSerializable("key");
             
        Retrieve Objects from Bundle
    for(int index = 0; index < classObject.size(); index++){
                 
        Person person = classObject.get(index);
        Toast.makeText(getApplicationContext(), person, Toast.LENGTH_SHORT).show();
    }
} catch(Exception e){
    e.printStackTrace();
}



