您的位置:首页 > 移动开发 > Android开发

Android Intent传递对象和ArrayList

2013-05-12 23:51 459 查看
在网上看到一个介绍利用Intent在activity之间传递复杂数据结构对象(如ArrayList)的例子,经过实测可行,记录下来,供以后参考。

感谢wdaming1986整理,本文转自/article/1393523.html

程序主界面 点击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代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: