(转)android---世界时区列表

|

在资源文件res目录下创建xml文件夹,然后下载一个世界时区的XML文件。 文件列表如下

<?xml version="1.0" encoding="utf-8"?>

<resources>

<timezone id="Asia/Shanghai" name="北京/中国"></timezone>

<timezone id="Asia/Hong_Kong" name="香港/中国"></timezone>

 <timezone id="Asia/Taipei" name="台北时间 (台北)"></timezone>

<timezone id="Asia/Seoul" name="首尔"></timezone>

<timezone id="Asia/Tokyo" name="东京/日本"></timezone>

 <timezone id="America/Denver" name="丹佛/美国山区"></timezone>

<timezone id="America/Costa_Rica" name="哥斯达黎加/美国中部"></timezone>

<timezone id="America/Chicago" name="芝加哥/美国中部"></timezone>

<timezone id="America/Mexico_City" name="墨西哥城/美国中部"></timezone>

<timezone id="America/Regina" name="里贾纳/美国中部"></timezone>

<timezone id="Pacific/Majuro"  name = "马朱罗"></timezone>

<timezone id="Pacific/Midway"  name="中途岛"></timezone>

<timezone id="Pacific/Honolulu"  name="檀香山"></timezone>

<timezone id="America/Anchorage"  name="安克雷奇"></timezone>

<timezone id="America/Los_Angeles" name="洛杉矶/美国太平洋"></timezone>

<timezone id="America/Tijuana" name="提华纳/美国太平洋"></timezone>

<timezone id="America/Phoenix" name="凤凰城美国山区"></timezone>

<timezone id="America/Chihuahua" name="奇瓦瓦"></timezone>

<timezone id="America/Bogota" name="波哥大/哥伦比亚"></timezone>

<timezone id="America/New_York" name="纽约/美国东部"></timezone>

<timezone id="America/Caracas" name="加拉加斯/委内瑞拉"></timezone>

<timezone id="America/Barbados" name="巴巴多斯/大西洋"></timezone>

<timezone id="America/Manaus" name="马瑙斯/亚马逊"></timezone>

<timezone id="America/Santiago" name="圣地亚哥"></timezone>

<timezone id="America/St_Johns" name="圣约翰/纽芬兰"></timezone>

<timezone id="America/Sao_Paulo" name="圣保罗"></timezone>

<timezone id="America/Argentina/Buenos_Aires" name="布宜诺斯艾利斯"></timezone>

<timezone id="America/Godthab" name="戈特霍布"></timezone>

<timezone id="America/Montevideo" name="蒙得维的亚/乌拉圭"></timezone>

<timezone id="Atlantic/South_Georgia" name="南乔治亚"></timezone>

<timezone id="Atlantic/Azores" name="亚述尔群岛"></timezone>

<timezone id="Atlantic/Cape_Verde" name="佛得角"></timezone>

<timezone id="Africa/Casablanca" name="卡萨布兰卡"></timezone>

<timezone id="Europe/London" name="伦敦/格林尼治"></timezone>

<timezone id="Europe/Amsterdam" name="阿姆斯特丹/中欧"></timezone>

<timezone id="Europe/Belgrade"  name="贝尔格莱德/中欧"></timezone>

<timezone id="Europe/Brussels" name="布鲁塞尔/中欧"></timezone>

<timezone id="Europe/Sarajevo" name="萨拉热窝/中欧"></timezone>

<timezone id="Africa/Windhoek" name="温得和克"></timezone>

<timezone id="Africa/Brazzaville" name="布拉扎维/西部非洲"></timezone>

<timezone id="Asia/Amman" name="安曼/东欧"></timezone>

<timezone id="Europe/Athens" name="雅典/东欧"></timezone>

<timezone id="Asia/Beirut" name="贝鲁特/东欧"></timezone>

<timezone id="Africa/Cairo" name="开罗/东欧"></timezone>

<timezone id="Europe/Helsinki" name="赫尔辛基/东欧"></timezone>

<timezone id="Asia/Jerusalem" name="耶路撒冷/以色列"></timezone>

<timezone id="Europe/Minsk" name="明斯克"></timezone>

<timezone id="Africa/Harare" name="哈拉雷/中部非洲"></timezone>

<timezone id="Asia/Baghdad" name="巴格达"></timezone>

<timezone id="Europe/Moscow" name="莫斯科"></timezone>

<timezone id="Asia/Kuwait" name="科威特"></timezone>

<timezone id="Africa/Nairobi" name="内罗毕/东部非洲"></timezone>

<timezone id="Asia/Tehran" name="德黑兰/伊朗"></timezone>

<timezone id="Asia/Baku" name="巴库"></timezone>

<timezone id="Asia/Tbilisi" name="第比利斯"></timezone>

<timezone id="Asia/Yerevan" name="埃里温"></timezone>

<timezone id="Asia/Dubai" name="迪拜"></timezone>

<timezone id="Asia/Kabul" name="喀布尔/阿富汗"></timezone>

<timezone id="Asia/Karachi" name="卡拉奇"></timezone>

<timezone id="Asia/Oral" name="乌拉尔"></timezone>

<timezone id="Asia/Yekaterinburg" name="叶卡捷林堡"></timezone>

<timezone id="Asia/Calcutta" name="加尔各答"></timezone>

<timezone id="Asia/Colombo" name="科伦坡"></timezone>

<timezone id="Asia/Katmandu" name="加德满都/尼泊尔"></timezone>

<timezone id="Asia/Almaty" name="阿拉木图"></timezone>

<timezone id="Asia/Rangoon" name="仰光/缅甸"></timezone>

<timezone id="Asia/Krasnoyarsk" name="克拉斯诺亚尔斯克"></timezone>

<timezone id="Asia/Bangkok" name="曼谷"></timezone>

<timezone id="Asia/Irkutsk" name="伊尔库茨克"></timezone>

<timezone id="Asia/Kuala_Lumpur" name="吉隆坡"></timezone>

<timezone id="Australia/Perth" name="佩思"></timezone>

<timezone id="Asia/Yakutsk" name="雅库茨克"></timezone>

<timezone id="Australia/Adelaide" name="阿德莱德"></timezone>

<timezone id="Australia/Darwin" name="达尔文"></timezone>

<timezone id="Australia/Brisbane" name="布里斯班"></timezone>

<timezone id="Australia/Hobart" name="霍巴特"></timezone>

<timezone id="Australia/Sydney" name="悉尼"></timezone>

<timezone id="Asia/Vladivostok" name="符拉迪沃斯托克/海参崴"></timezone>

<timezone id="Pacific/Guam" name="关岛"></timezone>

<timezone id="Asia/Magadan" name="马加丹"></timezone>

<timezone id="Pacific/Auckland" name="奥克兰"></timezone>

<timezone id="Pacific/Fiji" name="斐济"></timezone>

<timezone id="Pacific/Tongatapu" name="东加塔布"></timezone>

</resources>

在Activity中获取xml文件里面的信息,定义一个hashmap和一个arraylist。hashmap用来根据名称获取id。arraylist用于显示在Listview中。
具体见MainActivity.javapackage com.example.shiqu;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.HashMap;

import java.util.Locale;

import java.util.Map;

import java.util.TimeZone;

import com.example.shiqu.SearchActivity.myadapter;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.content.res.Resources;

import android.content.res.XmlResourceParser;

import android.text.Editable;

import android.text.TextWatcher;

import android.text.format.Time;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.BaseAdapter;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity implements OnItemClickListener,TextWatcher{

//显示时区的列表

private ListView listView;

//存放时区信息的HashMap

private HashMap<String, String> map = new HashMap<String, String>();

//这个数组只存放时区名,用于列表显示

private ArrayList<String> list = new ArrayList<String>();

//搜索输入框

private EditText editText;

//列表显示的适配器

private myadapter name;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView = (ListView)findViewById(R.id.aabb);

editText = (EditText)findViewById(R.id.ss);

editText.addTextChangedListener(this);

//通过这个方法,去xml文件中获得时区信息

getdata();

//列表显示

name = new myadapter();

listView.setAdapter(name);

//列表单击事件监听

listView.setOnItemClickListener(this);

}

//通过时区的id获得当时的时间

public String getTime(String id)

{

TimeZone tz = TimeZone.getTimeZone(id);

//String s = "TimeZone " + tz.getDisplayName(false, TimeZone.SHORT)

//+ " Timezon id :: " + tz.getID();

Time time = new Time(tz.getID());

time.setToNow();

int year = time.year;

int month = time.month;

int day = time.monthDay;

int minute = time.minute;

int hour = time.hour;

int sec = time.second;

return "当前时间为:" + year +

"年 " + (month+1) +

"月 " + day +

"日 " + hour +

"时 " + minute +

"分 " + sec +

"秒";

}

//一次次的从xml文件获取信息

public void getdata()

{

try {

//将上次的数据清空,方便重新搜索

map.clear();

list.clear();

//获取信息的方法

Resources res = getResources();

XmlResourceParser xrp = res.getXml(R.xml.timezones);

//判断是否已经到了文件的末尾

while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {

if (xrp.getEventType() == XmlResourceParser.START_TAG) {

String name = xrp.getName();

if (name.equals("timezone")) {

//关键词搜索,如果匹配,那么添加进去如果不匹配就不添加,如果没输入关键词“”,那么默认搜索全部

if(xrp.getAttributeValue(1).indexOf(editText.getText().toString()) != -1)

{

//0,标识id,1标识名称

map.put(xrp.getAttributeValue(1),

xrp.getAttributeValue(0));

list.add(xrp.getAttributeValue(1));

}

}

}

//搜索过第一个信息后,接着搜索下一个

xrp.next();

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//适配器类

class myadapter extends BaseAdapter{

Holder holder;

@Override

public int getCount() {

// TODO Auto-generated method stub

return list.size();

}

@Override

public Object getItem(int arg0) {

// TODO Auto-generated method stub

return null;

}

@Override

public long getItemId(int arg0) {

// TODO Auto-generated method stub

return 0;

}

@Override

public View getView(int pos, View view, ViewGroup arg2) {

// TODO Auto-generated method stub

holder = new Holder();

if(view == null)

{

view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null);

holder.view = (TextView)view.findViewById(R.id.aagg);

view.setTag(holder);

}

else

{

holder = (Holder) view.getTag();

}

holder.view.setText(list.get(pos));

return view;

}

class Holder{

public TextView view;

}

}

@Override

public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {

// TODO Auto-generated method stub

//点击后显示当前时区的时间

TextView textView = (TextView)view.findViewById(R.id.aagg);

Toast.makeText(MainActivity.this, getTime(map.get(textView.getText().toString())), 1000).show();

}

@Override

public void afterTextChanged(Editable arg0) {

// TODO Auto-generated method stub

}

@Override

public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,

int arg3) {

// TODO Auto-generated method stub

}

@Override

public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

// TODO Auto-generated method stub

//当输入框改变时,重新获取数据并通知列表更新

getdata();

name.notifyDataSetChanged();

}

}

列表每个item的布局文件 item.xml

<LinearLayout

xmlns:android="[http://schemas.android.com/apk/res/android](http://schemas.android.com/apk/res/android)"

android:layout_width="match_parent"

android:layout_height="match_parent">

<TextView 

    android:id="@+id/aagg"

    android:layout_width="match_parent"

    android:layout_height="50dp"

    android:textSize="18sp"

    android:gravity="center"

    android:text="北京"/>

</LinearLayout>
主界面的布局文件 activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="50dp"

android:orientation="horizontal">

<EditText 

    android:id="@+id/ss"

    android:layout_weight="1"

    android:layout_width="fill_parent"

    android:layout_height="50dp"

    android:hint="搜索时区"/>

</LinearLayout>

<ListView 

    android:id="@+id/aabb"

    android:layout_width="match_parent"

    android:layout_height="match_parent"/>

</LinearLayout>

|

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容