我想显示下图所示的微调框列表中所选时区的UTC时间的敬酒消息。

java - 如何在UTC中显示所选时区的吐司-LMLPHP

下面是我的代码:

 Spinner tz;
 tz = (Spinner) findViewById(R.id.edit);


    String[] idArray = TimeZone.getAvailableIDs();
    ArrayAdapter<String> idAdapter = new ArrayAdapter<>(getApplicationContext(),R.layout.custom,idArray);
    idAdapter.setDropDownViewResource(R.layout.custom);
    tz.setAdapter(idAdapter);


    for(int i = 0; i < idAdapter.getCount(); i++) {
        if(idAdapter.getItem(i).equals(TimeZone.getDefault().getID())) {
             tz.setSelection(i);


        }
    }


我已经尝试过了但是无法得到我的结果

http://developer.android.com/reference/java/util/TimeZone.html#getDisplayName%28boolean

最佳答案

为此,必须使用setOnItemSelectedListener。用法示例如下所示。

tz.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {

            SimpleDateFormat df = new SimpleDateFormat("dd MMM HH:mm a", Locale.getDefault());
            df.setTimeZone(TimeZone.getTimeZone(idAdapter.getItem(position))); //format in given timezone
            String strDate = df.format((new Date()).getTime());
            //Display the Toast
            Toast.makeText(getApplicationContext(), strDate, Toast.LENGTH_LONG).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }

    });


请注意,在构建视图时也会调用onItemSelected方法,因此可以考虑将其放入onCreate()方法调用中。

希望这可以帮助。

07-24 13:08