android怎么写程序,教程12 | 教你快速写一个Android程序

向日葵又名朝阳花,因其花常朝着太阳而得名。英语称之为sunflower却不是因为它的这一特性,因为其黄花开似太阳的缘故。16世纪~17世纪sunflower一词从拉丁语flos solis借译过来。向日葵的法语,意大利语和西班牙语名称tournesol,girasol和girasol同汉语名称一样,也是基于“向日”这一特性来命名的。

(3)创建javebean PlantInfo类

从plant.xml代码中可以看出,每种植物信息都包含name、content属性,为了方便后续的使用,可以将这两个属性封装成一个Javabean,具体代码如下所示:

1/**植物信息*/

1 public class PlantInfo {

2 private String plantName;

3 private String plantContent;

4 public String getPlantName() {

5 return plantName;

6 }

7 public void setPlantName(String plantName) {

8 this.plantName = plantName;

9 }

10 public String getPlantContent() {

11 return plantContent;

12 }

13 public void setPlantContent(String plantContent) {

14 this.plantContent = plantContent;

15}

16}

(4)创建工具类utils

为了代码的更加易于阅读,避免大量代码都在一个类中,因此创建一个用来解析XML文件的工具类utils。utils类中定义了一个getPlantsInfos()方法,该方法中包含了解析XML文件的逻辑代码,具体代码如下所示:

1/** 解析xml文件的工具类*/

17 public class utils {

18// 返回天气信息的集合

19 public static ListgetPlantInfos(InputStream is)

20 throws Exception {

21// 得到pull解析器

22 XmlPullParser parser = Xml.newPullParser();

23// 初始化解析器,第一个参数代表包含xml的数据

24 parser.setInput(is, 'utf-8');

25 ListplantInfos = null;

26 PlantInfo plantInfo = null;

27// 得到当前事件的类型

28 int type = parser.getEventType();

29// END_DOCUMENT文档结束标签

30 while (type != XmlPullParser.END_DOCUMENT) {

31 switch (type) {

32// 一个节点的开始标签

33 case XmlPullParser.START_TAG:

34// 解析到全局开始的标签infos根节点

35 if ('plants'.equals(parser.getName())) {

36 plantInfos = new ArrayList();

37 } else if ('plantsInfo'.equals(parser.getName())) {

38 plantInfo = new PlantInfo();

39 } else if ('name'.equals(parser.getName())) {

40// parset.nextText()得到该tag节点中的内容

41 String name = parser.nextText();

42 plantInfo.setPlantName(name);

43 } else if ('content'.equals(parser.getName())) {

44 String content = parser.nextText();

45 plantInfo.setPlantContent(content);

46 }

47 break;

48// 一个节点结束的标签

49 case XmlPullParser.END_TAG:

50// 一个城市的信息处理完毕,city的结束标签

51 if ('plantsInfo'.equals(parser.getName())) {

52// 一个城市的信息 已经处理完毕了.

53 plantInfos.add(plantInfo);

54 plantInfo = null;

55 }

56 break;

57 }

58// 只要不解析到文档末尾,就解析下一个条目。得到下一个节点的事件类型

59// 注意,这个一定不能忘,否则会成为死循环

60 type = parser.next();

61 }

62 return plantInfos;

63 }

64 }

(5)编写与界面交互的逻辑代码

在MainActivity中编写与界面交互的逻辑代码,具体如下所示:

1 public class MainActivity extends Activity implements OnClickListener {

65 private ListplantInfos;

66 private TextView mPlantContentTV;

67 private ImageView mPlantImgv;

68 @Override

69 protected void onCreate(Bundle savedInstanceState) {

70 super.onCreate(savedInstanceState);

71 setContentView(R.layout.activity_main);

72 try {

73//获取植物信息

74 plantInfos = utils.getPlantInfos(MainActivity.class

75 .getClassLoader().getResourceAsStream('plant.xml'));

76

77 } catch (Exception e) {

78 e.printStackTrace();

79 }

80 initView();

81 }

82 /**

83* 初始化控件

84  */

85 private void initView() {

86 findViewById(R.id.btn_xrq).setOnClickListener(this);

87 findViewById(R.id.btn_xrk).setOnClickListener(this);

88 findViewById(R.id.btn_xyc).setOnClickListener(this);

89  mPlantContentTV = (TextView)findViewById(R.id.tv_plants_content);

90  mPlantImgv = (ImageView) findViewById(R.id.imgv_plant);

91 mPlantContentTV.setText('\u3000\u3000'+plantInfos.get(0).getPlantContent());

92 mPlantImgv.setBackgroundResource(R.drawable.a);

93 }

94 @Override

95 public void onClick(View v) {

96 switch (v.getId()) {

97 case R.id.btn_xrq:

98//设置植物简介

99 mPlantContentTV.setText('\u3000\u3000'+plantInfos.get(0).getPlantContent());

100 mPlantImgv.setBackgroundResource(R.drawable.a);

101 break;

102 case R.id.btn_xyc:

103 mPlantContentTV.setText('\u3000\u3000'+plantInfos.get(1).getPlantContent());

104 mPlantImgv.setBackgroundResource(R.drawable.c);

105 break;

106 case R.id.btn_xrk:

107 mPlantContentTV.setText('\u3000\u3000'+plantInfos.get(2).getPlantContent());

108 mPlantImgv.setBackgroundResource(R.drawable.b);

109 break;

110 }

111 }

112 }

(6)运行程序

运行“植物百科”程序,能看到如图4-4左侧所示的界面,点击“向日葵”按钮可以看到图4-4右侧所示的界面。

72640942_1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值