Android Intent傳遞對象和ArrayList
在網上看到一個介紹利用Intent在activity之間傳遞復雜數據結構對象(如ArrayList)的例子,經過實測可行,記錄下來,供以后參考。
感謝wdaming1986整理,本文轉自http://blog.csdn.net/wdaming1986/article/details/6762633
程序主界面 點擊list按鈕傳遞數據
Student.java代碼
ShowListView.java代碼
ShowParView.java代碼
感謝wdaming1986整理,本文轉自http://blog.csdn.net/wdaming1986/article/details/6762633
程序主界面 點擊list按鈕傳遞數據


點擊parcelable傳遞數據 點擊serializable傳遞數據
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
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

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
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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

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), 
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

36

37

38

39

40

41

42

43

44

ShowParView.java代碼
posted on 2012-03-02 00:22 江天部落格 閱讀(10387) 評論(0) 編輯 收藏 所屬分類: Android