在Android中启动时区列表以获取拾取/结果
我看到在Android中可以通过intent进行操作,但我想做的是只启动显示时区的列表(单击“选择时区”),并在不修改用户日期和时间设置的情况下返回所选值。你知道怎么做吗?我知道这很旧,但我也很感兴趣在Android中启动时区列表以获取拾取/结果,android,Android,我看到在Android中可以通过intent进行操作,但我想做的是只启动显示时区的列表(单击“选择时区”),并在不修改用户日期和时间设置的情况下返回所选值。你知道怎么做吗?我知道这很旧,但我也很感兴趣 我一直在研究这个问题,我认为这是不可能的。我真的希望能够做同样的事情。它可以归结为将一些GPL Android代码移植到我的应用程序(ack),找到一个perconfigured DB和代码(JAR或java),或者最后自己编写代码(双重ack)。时区是我的专利,我希望不用自己写代码。根据用户的位
我一直在研究这个问题,我认为这是不可能的。我真的希望能够做同样的事情。它可以归结为将一些GPL Android代码移植到我的应用程序(ack),找到一个perconfigured DB和代码(JAR或java),或者最后自己编写代码(双重ack)。时区是我的专利,我希望不用自己写代码。根据用户的位置,有很多例外情况。如果您谈论的是微调器,您可以执行以下操作:
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);
}
}
ArrayAdapter适配器=
新的ArrayAdapter(这是android.R.layout.simple\u微调器项目);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
字符串[]TZ=TimeZone.getAvailableIDs();
ArrayList TZ1=新的ArrayList();
对于(int i=0;i
查看更多关于时区的文献Android系统类ZonelList.java和ZonePicker.java用于在“日期和时间”设置中构建时区列表。
受上述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);
}
}
private void populateandUpdate时区(){
//使用所有时区填充微调器
mSpinner=(微调器)findViewById(R.id.myTimeZoneSpiner);
字符串[]idArray=TimeZone.getAvailableIDs();
idAdapter=new ArrayAdapter(这是android.R.layout.simple\u微调器\u下拉菜单\u项,
艾达瑞);
idAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
mSpinner.setAdapter(idAdapter);
//现在从时区设置中将微调器设置为默认时区
对于(int i=0;i
如果你想知道用户基于lat long的时区,我就用这个。我知道这个很旧,但链接是死的谷歌知道它在哪里;-)