Android 获取世界时区

实现 世界时区的列表。

/*
* 作  者:2016/12/13 0013:19:20
* 版  本: 1
* 描  述:
*/
public class TimezoneActivity extends FTBaseActivity implements TextWatcher, AdapterView.OnItemClickListener {
    @Bind(R.id.back)
    ImageView mBack;
    @Bind(R.id.title_name)
    TextView mTitleName;
    //显示时区的列表
    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_time_zone);

        ButterKnife.bind(this);
        listView = (ListView) findViewById(R.id.aabb);
        mTitleName.setText("选择时区");
//通过这个方法,去xml文件中获得时区信息
        getdata();
//列表显示
        name = new myadapter();
        listView.setAdapter(name);
//列表单击事件监听
        listView.setOnItemClickListener(this);
    }


    //一次次的从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")) {
//关键词搜索,如果匹配,那么添加进去如果不匹配就不添加,如果没输入关键词“”,那么默认搜索全部
                        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();
        }
    }

    @OnClick(R.id.back)
    public void onClick() {
        finish();
    }

    //适配器类
    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(TimezoneActivity.this).inflate(R.layout.item_zone, 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;
        }
    }

    public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
        //点击后显示当前时区的时间
        TextView textView = (TextView) view.findViewById(R.id.aagg);
        String timeEn=map.get(textView.getText().toString());//时区样式。。
        String timeCh = list.get(arg2);//时区
        Intent intent=new Intent();
        intent.putExtra("timeen",timeEn);
            intent.putExtra("timech",timeCh);
        setResult(41,intent);
        finish();
        //        Toast.makeText(TimezoneActivity.this, getTime(map.get(textView.getText().toString())), Toast.LENGTH_LONG).show();
    }

    public void afterTextChanged(Editable arg0) {
    }

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

    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
//当输入框改变时,重新获取数据并通知列表更新
        getdata();
        name.notifyDataSetChanged();
    }

}


XML  



<?xml version="1.0" encoding="utf-8"?>
<resources>
    <timezone id="Asia/Shanghai" name="北京/中国"/>
    <timezone id="Asia/Hong_Kong" name="香港/中国"/>
    <timezone id="Asia/Taipei" name="台北时间 (台北)"/>
    <timezone id="Asia/Seoul" name="首尔"/>
    <timezone id="Asia/Tokyo" name="东京/日本"/>
    <timezone id="America/Denver" name="丹佛/美国山区"/>
    <timezone id="America/Costa_Rica" name="哥斯达黎加/美国中部"/>
    <timezone id="America/Chicago" name="芝加哥/美国中部"/>
    <timezone id="America/Mexico_City" name="墨西哥城/美国中部"/>
    <timezone id="America/Regina" name="里贾纳/美国中部"/>
    <timezone id="Pacific/Majuro"  name = "马朱罗"/>
    <timezone id="Pacific/Midway"  name="中途岛"/>
    <timezone id="Pacific/Honolulu"  name="檀香山"/>
    <timezone id="America/Anchorage"  name="安克雷奇"/>
    <timezone id="America/Los_Angeles" name="洛杉矶/美国太平洋"/>
    <timezone id="America/Tijuana" name="提华纳/美国太平洋"/>
    <timezone id="America/Phoenix" name="凤凰城美国山区"/>
    <timezone id="America/Chihuahua" name="奇瓦瓦"/>
    <timezone id="America/Bogota" name="波哥大/哥伦比亚"/>
    <timezone id="America/New_York" name="纽约/美国东部"/>
    <timezone id="America/Caracas" name="加拉加斯/委内瑞拉"/>
    <timezone id="America/Barbados" name="巴巴多斯/大西洋"/>
    <timezone id="America/Manaus" name="马瑙斯/亚马逊"/>
    <timezone id="America/Santiago" name="圣地亚哥"/>
    <timezone id="America/St_Johns" name="圣约翰/纽芬兰"/>
    <timezone id="America/Sao_Paulo" name="圣保罗"/>
    <timezone id="America/Argentina/Buenos_Aires" name="布宜诺斯艾利斯"/>
    <timezone id="America/Godthab" name="戈特霍布"/>
    <timezone id="America/Montevideo" name="蒙得维的亚/乌拉圭"/>
    <timezone id="Atlantic/South_Georgia" name="南乔治亚"/>
    <timezone id="Atlantic/Azores" name="亚述尔群岛"/>
    <timezone id="Atlantic/Cape_Verde" name="佛得角"/>
    <timezone id="Africa/Casablanca" name="卡萨布兰卡"/>
    <timezone id="Europe/London" name="伦敦/格林尼治"/>
    <timezone id="Europe/Amsterdam" name="阿姆斯特丹/中欧"/>
    <timezone id="Europe/Belgrade"  name="贝尔格莱德/中欧"/>
    <timezone id="Europe/Brussels" name="布鲁塞尔/中欧"/>
    <timezone id="Europe/Sarajevo" name="萨拉热窝/中欧"/>
    <timezone id="Africa/Windhoek" name="温得和克"/>
    <timezone id="Africa/Brazzaville" name="布拉扎维/西部非洲"/>
    <timezone id="Asia/Amman" name="安曼/东欧"/>
    <timezone id="Europe/Athens" name="雅典/东欧"/>
    <timezone id="Asia/Beirut" name="贝鲁特/东欧"/>
    <timezone id="Africa/Cairo" name="开罗/东欧"/>
    <timezone id="Europe/Helsinki" name="赫尔辛基/东欧"/>
    <timezone id="Asia/Jerusalem" name="耶路撒冷/以色列"/>
    <timezone id="Europe/Minsk" name="明斯克"/>
    <timezone id="Africa/Harare" name="哈拉雷/中部非洲"/>
    <timezone id="Asia/Baghdad" name="巴格达"/>
    <timezone id="Europe/Moscow" name="莫斯科"/>
    <timezone id="Asia/Kuwait" name="科威特"/>
    <timezone id="Africa/Nairobi" name="内罗毕/东部非洲"/>
    <timezone id="Asia/Tehran" name="德黑兰/伊朗"/>
    <timezone id="Asia/Baku" name="巴库"/>
    <timezone id="Asia/Tbilisi" name="第比利斯"/>
    <timezone id="Asia/Yerevan" name="埃里温"/>
    <timezone id="Asia/Dubai" name="迪拜"/>
    <timezone id="Asia/Kabul" name="喀布尔/阿富汗"/>
    <timezone id="Asia/Karachi" name="卡拉奇"/>
    <timezone id="Asia/Oral" name="乌拉尔"/>
    <timezone id="Asia/Yekaterinburg" name="叶卡捷林堡"/>
    <timezone id="Asia/Calcutta" name="加尔各答"/>
    <timezone id="Asia/Colombo" name="科伦坡"/>
    <timezone id="Asia/Katmandu" name="加德满都/尼泊尔"/>
    <timezone id="Asia/Almaty" name="阿拉木图"/>
    <timezone id="Asia/Rangoon" name="仰光/缅甸"/>
    <timezone id="Asia/Krasnoyarsk" name="克拉斯诺亚尔斯克"/>
    <timezone id="Asia/Bangkok" name="曼谷"/>
    <timezone id="Asia/Irkutsk" name="伊尔库茨克"/>
    <timezone id="Asia/Kuala_Lumpur" name="吉隆坡"/>
    <timezone id="Australia/Perth" name="佩思"/>
    <timezone id="Asia/Yakutsk" name="雅库茨克"/>
    <timezone id="Australia/Adelaide" name="阿德莱德"/>
    <timezone id="Australia/Darwin" name="达尔文"/>
    <timezone id="Australia/Brisbane" name="布里斯班"/>
    <timezone id="Australia/Hobart" name="霍巴特"/>
    <timezone id="Australia/Sydney" name="悉尼"/>
    <timezone id="Asia/Vladivostok" name="符拉迪沃斯托克/海参崴"/>
    <timezone id="Pacific/Guam" name="关岛"/>
    <timezone id="Asia/Magadan" name="马加丹"/>
    <timezone id="Pacific/Auckland" name="奥克兰"/>
    <timezone id="Pacific/Fiji" name="斐济"/>
    <timezone id="Pacific/Tongatapu" name="东加塔布"/>
</resources>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值