在网上看到一个介绍利用Intent在activity之间传递复杂数据结构对象(如ArrayList)的例子,经过实测可行,记录下来,供以后参考。
感谢
wdaming1986整理,本文转自
http://blog.csdn.net/wdaming1986/article/details/6762633 程序主界面 点击list按钮传递数据
点击parcelable传递数据 点击serializable传递数据
MainAcitivty.java的代码
1
import java.io.Serializable;
2
import java.util.ArrayList;
3
import java.util.HashMap;
4
import java.util.List;
5
import java.util.Map;
6
7
import android.app.Activity;
8
import android.app.ListActivity;
9
import android.content.Intent;
10
import android.graphics.Color;
11
import android.graphics.drawable.GradientDrawable;
12
import android.graphics.drawable.GradientDrawable.Orientation;
13
import android.os.Bundle;
14
import android.view.View;
15
import android.view.View.OnClickListener;
16
import android.widget.Button;
17
18
public class MainActivity extends Activity implements Serializable
{
19
20
private static final long serialVersionUID = 1L;
21
22
private String s_name;
23
private int s_number;
24
private String s_sex;
25
26
private Button list_Button;
27
private Button ser_Button;
28
private Button par_Button;
29
private ArrayList<String> m_list;
30
31
public final static String PAR_KEY = "com.cn.daming.parcelable";
32
public final static String SER_KEY = "com.cn.daming.serializable";
33
public final static String LIST_KEY = "com.cn.daming.ArrayList";
34
@Override
35
public void onCreate(Bundle savedInstanceState)
{
36
super.onCreate(savedInstanceState);
37
setContentView(R.layout.main);
38
initlist();
39
drawBackground();
40
initList_Button();
41
initPar_Button();
42
inintSer_Button();
43
}
44
45
public void initlist()
46
{
47
m_list = new ArrayList<String>();
48
m_list.add("大明ArrayList");
49
m_list.add("年龄:25岁");
50
m_list.add("性别:男");
51
}
52
53
public void drawBackground()
54
{
55
GradientDrawable grad = new GradientDrawable(
56
Orientation.TL_BR,
57
new int[]
{Color.rgb(0, 0, 127),
58
Color.rgb(0, 0, 255),
59
Color.rgb(127, 0, 255),
60
Color.rgb(127, 127, 255),
61
Color.rgb(127, 255, 255),
62
Color.rgb(255, 255, 255)}
63
);
64
65
this.getWindow().setBackgroundDrawable(grad);
66
}
67
68
public void initList_Button()
69
{
70
list_Button = (Button)findViewById(R.id.list_button);
71
list_Button.setOnClickListener(new OnClickListener()
{
72
73
@Override
74
public void onClick(View arg0)
{
75
Intent list_intent = new Intent();
76
list_intent.putStringArrayListExtra(LIST_KEY, m_list);
77
list_intent.setClass(MainActivity.this, ShowListView.class);
78
startActivity(list_intent);
79
}
80
});
81
}
82
83
public void initPar_Button()
84
{
85
par_Button = (Button)findViewById(R.id.par_button);
86
par_Button.setOnClickListener(new OnClickListener()
{
87
88
@Override
89
public void onClick(View arg0)
{
90
Student m_Student = new Student();
91
m_Student.setName("大明例子");
92
m_Student.setAge(25);
93
m_Student.setSex("男");
94
Intent p_Intent = new Intent(MainActivity.this,ShowParView.class);
95
Bundle mBundle = new Bundle();
96
mBundle.putParcelable(PAR_KEY, m_Student);
97
p_Intent.putExtras(mBundle);
98
startActivity(p_Intent);
99
}
100
});
101
}
102
103
public void inintSer_Button()
104
{
105
ser_Button = (Button)findViewById(R.id.ser_button);
106
ser_Button.setOnClickListener(new OnClickListener()
{
107
108
@Override
109
public void onClick(View arg0)
{
110
MainActivity s_activity = new MainActivity();
111
s_activity.setS_name("Daming Serlizable!");
112
s_activity.setS_number(25);
113
s_activity.setS_sex("男");
114
Intent mIntent = new Intent(MainActivity.this,ShowSerView.class);
115
Bundle mBundle = new Bundle();
116
mBundle.putInt("state", 3);
117
mBundle.putSerializable(SER_KEY, s_activity);
118
mIntent.putExtras(mBundle);
119
startActivity(mIntent);
120
}
121
});
122
}
123
124
125
public void setS_name(String s_name)
{
126
this.s_name = s_name;
127
}
128
129
public String getS_name()
{
130
return s_name;
131
}
132
133
public void setS_number(int s_number)
{
134
this.s_number = s_number;
135
}
136
137
public int getS_number()
{
138
return s_number;
139
}
140
141
public void setS_sex(String s_sex)
{
142
this.s_sex = s_sex;
143
}
144
145
public String getS_sex()
{
146
return s_sex;
147
}
148
}
Student.java代码
1
import android.os.Parcel;
2
import android.os.Parcelable;
3
4
public class Student implements Parcelable
{
5
6
private String name;
7
private int age;
8
private String sex;
9
10
public String getName()
{
11
return name;
12
}
13
public void setName(String name)
{
14
this.name = name;
15
}
16
public int getAge()
{
17
return age;
18
}
19
public void setAge(int age)
{
20
this.age = age;
21
}
22
public String getSex()
{
23
return sex;
24
}
25
public void setSex(String sex)
{
26
this.sex = sex;
27
}
28
29
public static final Parcelable.Creator<Student> CREATOR = new Creator<Student>()
{
30
public Student createFromParcel(Parcel source)
{
31
Student mStudent = new Student();
32
mStudent.name = source.readString();
33
mStudent.age = source.readInt();
34
mStudent.sex = source.readString();
35
return mStudent;
36
}
37
public Student[] newArray(int size)
{
38
return new Student[size];
39
}
40
};
41
42
43
@Override
44
public int describeContents()
{
45
// TODO Auto-generated method stub
46
return 0;
47
}
48
@Override
49
public void writeToParcel(Parcel parcel, int arg1)
{
50
parcel.writeString(name);
51
parcel.writeInt(age);
52
parcel.writeString(sex);
53
}
54
}
55
ShowListView.java代码
1
import java.util.ArrayList;
2
3
import android.app.Activity;
4
import android.content.Intent;
5
import android.graphics.Color;
6
import android.graphics.drawable.GradientDrawable;
7
import android.graphics.drawable.GradientDrawable.Orientation;
8
import android.os.Bundle;
9
import android.widget.TextView;
10
11
public class ShowListView extends Activity
{
12
13
private Intent list_intent;
14
private ArrayList<String> m_arrayList;
15
private TextView list_textview;
16
17
@Override
18
protected void onCreate(Bundle savedInstanceState)
{
19
super.onCreate(savedInstanceState);
20
setContentView(R.layout.show_list_view);
21
drawBackground();
22
list_textview = (TextView)findViewById(R.id.list_text_view);
23
list_intent = getIntent();
24
m_arrayList = list_intent.getExtras().getStringArrayList(MainActivity.LIST_KEY);
25
m_arrayList.get(0);
26
list_textview.setText(m_arrayList.get(0)+" \n"+m_arrayList.get(1)+"\n"+m_arrayList.get(2));
27
}
28
29
public void drawBackground()
30
{
31
GradientDrawable grad = new GradientDrawable(
32
Orientation.TL_BR,
33
new int[]
{Color.rgb(0, 0, 127),
34
Color.rgb(0, 0, 255),
35
Color.r
1
import android.app.Activity;
2
import android.graphics.Color;
3
import android.graphics.drawable.GradientDrawable;
4
import android.graphics.drawable.GradientDrawable.Orientation;
5
import android.os.Bundle;
6
import android.widget.TextView;
7
8
public class ShowParView extends Activity
{
9
10
private TextView par_text_view;
11
12
@Override
13
protected void onCreate(Bundle savedInstanceState)
{
14
super.onCreate(savedInstanceState);
15
setContentView(R.layout.show_par_view);
16
drawBackground();
17
18
par_text_view = (TextView)findViewById(R.id.par_text_view);
19
Student p_student = (Student)getIntent().getParcelableExtra(MainActivity.PAR_KEY);
20
par_text_view.setText("姓名: " + p_student.getName()+"\n"+
21
"年龄: " + p_student.getAge() + "\n" +
22
"性别 : " + p_student.getSex() + "\n" +
23
"类:" + p_student.getClass());
24
25
}
26
27
public void drawBackground()
28
{
29
GradientDrawable grad = new GradientDrawable(
30
Orientation.TL_BR,
31
new int[]
{Color.rgb(0, 0, 127),
32
Color.rgb(0, 0, 255),
33
Color.rgb(127, 0, 255),
34
Color.rgb(127, 127, 255),
35
Color.rgb(127, 255, 255),
36
Color.rgb(255, 255, 255)}
37
);
38
39
this.getWindow().setBackgroundDrawable(grad);
40
}
41
}
42
gb(127, 0, 255),
36
Color.rgb(127, 127, 255),
37
Color.rgb(127, 255, 255),
38
Color.rgb(255, 255, 255)}
39
);
40
41
this.getWindow().setBackgroundDrawable(grad);
42
}
43
}
44
ShowParView.java代码