android---世界时区列表
2016-04-27 19:56
686 查看
在资源文件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.java package 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" 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> |
相关文章推荐
- Android 批量上传图片进度回调
- android---对SharePreferences的封装
- android---瀑布流gridview
- android---防止ListView数据错乱的方法
- android---自定义数字选择器
- android---ScrollView中嵌套ListView
- Android ImageButton,Button,CheckBox等抢了原有View的点击事件 点击事件冲突问题
- android---后台代发短信
- android---service的启动,和activity的通信
- android---broadcastReceiver广播机制
- android---在ScrollView中嵌套ViewPager
- android---多线程(启动,暂停,终止)
- android---控件隐藏与显示动画
- android---图片获得与裁剪
- android---仿淘宝下单PopWindow
- Android 图片滤镜工具——高斯模糊
- android---下拉ListView(顺畅版)
- android---gesture手势识别类
- Android Wallpaper分析
- Android RadioButton图片和图片尺寸