iT邦幫忙

2

Android 無法用switch判斷式 ,更改下拉式選單的內容

  • 分享至 

  • xImage

目前所寫的程式

package com.example.time2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.CookieManager;
import android.webkit.WebView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity {
    Spinner ES;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Calendar c = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        Calendar c3 = Calendar.getInstance();
        Calendar c4 =Calendar.getInstance();
        Calendar c5 =Calendar.getInstance();
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sl = new SimpleDateFormat("u");
        c2.add(Calendar.DAY_OF_MONTH,1);//加1天
        c3.add(Calendar.DAY_OF_MONTH,2);
        c4.add(Calendar.DAY_OF_MONTH,3);
        c5.add(Calendar.DAY_OF_MONTH,4);

        String dat = sd.format(c.getTime());//當天
        String dat2 = sd.format(c2.getTime());//明天
        String dat3 = sd.format(c3.getTime());//後天
        String dat4 = sd.format(c4.getTime());//三天後
        String dat5 = sd.format(c5.getTime());//四天後
        String datt = sl.format(c.getTime());//當天星期

        ES = (Spinner)findViewById(R.id.es);

        String[] Weekday ={dat,dat2,dat3};
        String[] Weekday2 ={dat,dat2,dat5};
        String[] Weekday3 ={dat,dat4,dat5};

        TextView TV =(TextView)findViewById(R.id.da);
        TV.setText(datt);
        int intV = Integer.valueOf(datt);//字串datt轉換成整數
        switch(intV){
        case '7'://當天周日
           ArrayAdapter<String> lunchList2 = new ArrayAdapter<>
              (MainActivity.this,
                        android.R.layout.simple_spinner_dropdown_item,
                        Weekday2);ES.setAdapter(lunchList2);
                break;

        case '5'://當天周五
           ArrayAdapter<String> lunchList3 = new ArrayAdapter<>
                (MainActivity.this,
                        android.R.layout.simple_spinner_dropdown_item,
                        Weekday3);ES.setAdapter(lunchList3);
                break;
        default:
           ArrayAdapter<String> lunchList = new ArrayAdapter<>
                (MainActivity.this,
                        android.R.layout.simple_spinner_dropdown_item,
                        Weekday);ES.setAdapter(lunchList);
                        //其餘日子
                break;
        }

設了三種日期選項組合 帶入下拉式選單ES
抓取當天日期改為整數用Switch判斷當天星期來決定該再下拉式選單丟入哪一個日期選項
測試上皆只會選擇default的結果
https://ithelp.ithome.com.tw/upload/images/20200322/20125077g6hJvkEquT.jpg
若把case 改成當天的星期也不會做修改
ex:若當天為周日
case '7':
ArrayAdapter lunchList2 = new ArrayAdapter<>
(MainActivity.this,android.R.layout.simple_spinner_dropdown_item
,Weekday2);ES.setAdapter(lunchList2);
break;
https://ithelp.ithome.com.tw/upload/images/20200322/20125077Asb2tQ8L0F.jpg
不知道是不是switch判斷的方式用的不對
想請問寫法是不是錯了.....

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
dragonH
iT邦超人 5 級 ‧ 2020-03-22 17:34:48
最佳解答

沒實測過你的 code

但是看到你的

int intV = Integer.valueOf(datt);/

intV 會是 integer

所以

7 ≠ '7'

5 ≠ '5'

所以最後就會是 default

因為你拿 integer 去比

還有個可能就是你的 intV

不是你想的那樣

x31131211 iT邦新手 5 級 ‧ 2020-03-22 19:55:41 檢舉

原來''後算字串.....謝謝.......

dragonH iT邦超人 5 級 ‧ 2020-03-22 22:29:37 檢舉

/images/emoticon/emoticon42.gif

我要發表回答

立即登入回答