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. java jvm学习笔记十(策略和保护域)

    欢迎转载请说明出处:http://blog.csdn.net/yfqnihao/article/details/8271415 前面一节,我们做了一个简单的实验,来说明什么是策略文件,在文章的最后,也 ...

  2. POJ 3630- Phone List(Trie)

    题意:给一组串,是否存在一个串是另一个的前缀. 分析:val[N]保存树节点上是否组成一个串 #include <map> #include <set> #include &l ...

  3. Install minidwep-gtk

    Hi to everyone in this time i'm going to show you how to install minidwep-gtk to test your own wifi ...

  4. NOIP2005 篝火晚会

    篝火晚会 (fire.pas/c/cpp) [问题描述] 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会. ...

  5. ubuntu 中文界面下中文文件夹改英文

    首先,打开终端,切换成英文环境, export LANG=en_US   接着,目录转换 xdg-user-dirs-gtk-update   最后,切换回中文环境 export LANG=zh_CN ...

  6. 【Spark学习】Spark 1.1.0 with CDH5.2 安装部署

    [时间]2014年11月18日 [平台]Centos 6.5 [工具]scp [软件]jdk-7u67-linux-x64.rpm spark-worker-1.1.0+cdh5.2.0+56-1.c ...

  7. HW6.16

    import java.util.Arrays; public class Solution { public static void main(String[] args) { int[] arra ...

  8. MFRCC522 SPI无法通讯【worldsing笔记】

    用单片机于MRFC522与单片接时,加上485通讯后出现很诡异的像: 只要485芯片上有收到外部发送的信号时RC522就死掉,经过仿真卡在了SPI的收发部分(等待回复) u8 MFRC522Write ...

  9. 学习和理解C#的委托

    去年自学C#用的教程是入门级的<学通C#的24堂课>,教材里面也没有提到委托和事件,工作中也没怎么用到.后来一次在网上看了一些大牛的博客,读完之后感觉懵懵懂懂,似懂非懂,过了两三天之后,却 ...

  10. C/C++中的变量作用域

    #include <iostream> using namespace std; int i = 1;int j = 2; int main(){     int i = 9;  //C/ ...