xml数据:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:padd<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <Spinner
android:id="@+id/spinner_city"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> </RelativeLayout>ingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <Spinner
android:id="@+id/spinner_city"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> </RelativeLayout>

源代码:

package com.example.day04_work1;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Spinner;
/**
* 将文件weathercity.xml数据中的省份显示在下拉列表中
* 1.将文件中的数据读取出来
* 2.解析数据,将数据存到集合(数据源)
* 3.下拉列表设置适配器,将集合作为数据源放入适配器
*/
public class MainActivity extends Activity { private Spinner spinner;
private String TAG = "info"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner_city);
String data = getStringFromFile();
if(data != null && data.length() != 0){
//准备数据源
List<String> list = parsexmlToList(data);
//创建适配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, list);
//设置适配器
spinner.setAdapter(adapter);
} }
/**
* 解析xml数据到集合
* @param data
* @return
*/
private List<String> parsexmlToList(String data) {
// TODO Auto-generated method stub
try {
List<String> list = new ArrayList<String>();
//获取xml解析器
/**
* 三种方式:
* 1.在res目录中的xml目录中的xml文件:XmlPullParser parser = getResource().getXml(R.xml.citys_weather.xml);
* 2.XmlPullParser parser = Xml.newPullParser();
* 3.XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
*/
XmlPullParser parser = Xml.newPullParser();
//设置数据源
parser.setInput(new StringReader(data));
//得到事件码
int code = parser.getEventType();
while((code!=XmlPullParser.END_DOCUMENT)){
String name = parser.getName();
switch (code) {
case XmlPullParser.START_TAG:
if("pn".equals(name)){
list.add(parser.nextText());
}
break; default:
break;
}
code = parser.next();
}
return list;
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return null;
}
/**
* 从文件获取xml数据
* @return
*/
private String getStringFromFile() {
InputStream is = null;
ByteArrayOutputStream baos = null;
try {
//将asserts目录中的文件转换成输入流
is = getResources().getAssets().open("citys_weather.xml");
baos = new ByteArrayOutputStream();
int len = 0;
byte[] buf = new byte[1024*1024];
while(-1!=(len = is.read(buf))){
baos.write(buf, 0, len);
baos.flush();
}
return new String(baos.toByteArray());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(baos!=null){
baos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(is!=null){
is.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null; } }

Android_Spinner_example的更多相关文章

随机推荐

  1. devexpress 中Grid 的使用:为零不显示

    如果要让为0的列不显示: this.gridColumn_FAmount.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; ...

  2. 词汇小助手V3.0发布了——不只是一个查单词的软件

    欢迎使用词汇小助手 作者:IT小小龙 电子邮箱:long_python@126.com 个人博客:http://blog.sina.com.cn/buduanqs 一款跨平台词汇查询记忆学习软件. 已 ...

  3. LeetCode题解——Longest Palindromic Substring

    题目: 给定一个字符串S,返回S中最长的回文子串.S最长为1000,且最长回文子串是唯一. 解法: ①遍历,对于每个字符,计算以它为中心的回文子串长度(长度为奇数),同时计算以它和右边相邻字符为中心的 ...

  4. 单点登录sso规范

    http://jasig.github.io/cas/development/protocol/CAS-Protocol-Specification.html

  5. 【转】linux trap

    在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚 本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我 们可不希望用户使用c ...

  6. linux文件属性详细说明

    1. Linux 文件属性概说: Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容: [root@localhost ...

  7. leetcode@ [300] Longest Increasing Subsequence (记忆化搜索)

    https://leetcode.com/problems/longest-increasing-subsequence/ Given an unsorted array of integers, f ...

  8. Android实例-操作sqlite数据之自建导航(XE8+小米2)

    相关资料: 源文:http://blog.sina.com.cn/s/blog_77691fb90101g9hh.html help://embarcadero.rs_xe5/rad/Mobile_T ...

  9. SQL2008-删除时间字段重复的方法

    ID  EMAgitation_ID    YieldDateTime 1   2                              2012-02-11 10:18:54.0002   2  ...

  10. .Net中的Placeholder控件

    NET中的placeholder控件用来做什么的?其实PLACEHOLDER控件,是用来做动态加载用户自定义控件时,一个占位置作用的控件,比如 在从一个Web页面转换到另一个Web页面时,你的ASP. ...