在Android中启动时区列表以获取选择/结果

tro*_*man 4 android

我看到可以通过Android中的意图启动日期和时间设置,但我想要做的只是启动显示时区的列表(单击"选择时区")并获取所选值没有选择修改用户的日期和时间设置.知道怎么做吗?

Cor*_*Cat 10

如果你在谈论一个微调器你可以做这样的事情:

ArrayAdapter <CharSequence> adapter =
          new ArrayAdapter <CharSequence> (this, android.R.layout.simple_spinner_item );
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    String[]TZ = TimeZone.getAvailableIDs();
    ArrayList<String> TZ1 = new ArrayList<String>();
    for(int i = 0; i < TZ.length; i++) {
        if(!(TZ1.contains(TimeZone.getTimeZone(TZ[i]).getDisplayName()))) {
            TZ1.add(TimeZone.getTimeZone(TZ[i]).getDisplayName());
        }
    }
    for(int i = 0; i < TZ1.size(); i++) {
        adapter.add(TZ1.get(i));
    }
    final Spinner TZone = (Spinner)findViewById(R.id.TimeZoneEntry);
    TZone.setAdapter(adapter);
    for(int i = 0; i < TZ1.size(); i++) {
        if(TZ1.get(i).equals(TimeZone.getDefault().getDisplayName())) {
            TZone.setSelection(i);
        }
    }
Run Code Online (Sandbox Code Playgroud)

看看这里对时区的更多文献资料


bha*_*arc 6

受到上述示例的CornCats的启发,但使用对我有用的适配器的实现略有不同和较短:

private void populateAndUpdateTimeZone() {

   //populate spinner with all timezones
    mSpinner = (Spinner) findViewById(R.id.mytimezonespinner);
    String[] idArray = TimeZone.getAvailableIDs();
    idAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,
            idArray);
    idAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mSpinner.setAdapter(idAdapter);

     // now set the spinner to default timezone from the time zone settings
    for(int i = 0; i < idAdapter.getCount(); i++) {
        if(idAdapter.getItem(i).equals(TimeZone.getDefault().getID())) {
            mSpinner.setSelection(i);
        }
    }
Run Code Online (Sandbox Code Playgroud)