綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 取得spinner的值

[複製連結] 查看: 4697|回覆: 3|好評: 0
跳轉到指定樓層
樓主
iceplum | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2012-9-29 16:06

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x

兩個spinner
如何取得選擇的值來做if else

例如 spinner1 有 a,b,c
   spinner2 有 1,2,3

若選擇 a和2可到介面1
   選擇 b和1可到介面2

我現在卡在於不知道怎麼在if else裡面寫分別取的的值

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
不知火羽 | 收聽TA | 只看該作者
發表於 2012-9-30 10:19
本帖最後由 不知火羽 於 2012-9-30 10:30 編輯

你可以試試看用getSelectedItemPosition()來取的spinner的值

首先將spinner1和spinner2的內容做成陣列
比如說
  1. private final Static String[] SPINNER_ARRAY1={"a","b","c"}
  2. private final Static String[] SPINNER_ARRAY2={"1","2","3"}
複製代碼
(以上程式碼是宣告在class裡面,如果是在方法內可以把private final Static去掉
pirivate 可依照個人需求改成public或protected)

然後將兩個陣列透過ArrayAdapter分別丟進兩個Spinner裡面
(這部分語法網路上可以查到)

再來是透過getSelectedItemPosition()來取的spinner的值做判斷
  1. if ((spinner1.getSelectedItemPosition() == 0) && (spinner2.getSelectedItemPosition() == 1)){
  2. //選擇a和2的情況
  3. }else if((spinner1.getSelectedItemPosition() == 2) && (spinner2.getSelectedItemPosition() == 0)){
  4. //選擇b和1的情況}
複製代碼
註getSelectedItemPosition()是取得你陣列中的順序
個人是習慣用順序去做判斷 (舊版JAVA的switch...case...迴圈似乎只能用int去帶)
另一種做法則是
  1. if (spinner1.getSelectedItemPosition() == 0){
  2.   if (spinner2.getSelectedItemPosition() == 0){
  3.   //a1
  4.   }else if(spinner2.getSelectedItemPosition() == 1){
  5.   //a2
  6.   }else if(spinner2.getSelectedItemPosition() == 2){
  7.   //a3
  8.   }
  9. }else if(spinner1.getSelectedItemPosition() == 1){
  10. ...
  11. }else if(spinner1.getSelectedItemPosition() == 2){
  12. ...
  13. }
複製代碼
或是改用switch...case...也行


如果要取得值 可以搭配前面宣告的陣列取得 語法如下
  1. SPINNER_ARRAY1[spinner1.getSelectedItemPosition()]
複製代碼
要做判斷式也是可以的 語法如下
  1. SPINNER_ARRAY1[spinner1.getSelectedItemPosition()].equals("a");
複製代碼
或是用getSelectedItem()判斷也行
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| iceplum | 收聽TA | 只看該作者
發表於 2012-9-30 14:34

我寫進去後的判斷裡
只能取得一開始spinner1的陣列0和spinner2的陣列0
如果是其他選擇的話
都不會有任何反應


用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
不知火羽 | 收聽TA | 只看該作者
發表於 2012-9-30 22:50
本帖最後由 不知火羽 於 2012-9-30 22:58 編輯
iceplum 發表於 2012-9-30 14:34
我寫進去後的判斷裡
只能取得一開始spinner1的陣列0和spinner2的陣列0
如果是其他選擇的話


你的意思是指說選擇spinner後就進到介面 如果沒接聽器(Listener)的話
當然選擇回沒有效(前面的判斷語法主要就是要寫在Listener裡面)

如果是這樣的的話你要用OnItemSelectedListener()去做
先寫一個class去implement OnItemSelectedListener
再將OnItemSelectedListener註冊到兩個spinner去
  1. private class SpinnerSelectedListener implements OnItemSelectedListener{
  2.     @Override
  3.     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
  4.        if (spinner1.getSelectedItemPosition() == 0){
  5.          if (spinner2.getSelectedItemPosition() == 0){
  6.          //a1
  7.          }else if(spinner2.getSelectedItemPosition() == 1){
  8.          //a2
  9.          }else if(spinner2.getSelectedItemPosition() == 2){
  10.          //a3
  11.          }
  12.        }else if(spinner1.getSelectedItemPosition() == 1){
  13.        ...
  14.        }else if(spinner1.getSelectedItemPosition() == 2){
  15.        ...
  16.        }
  17.            }
  18.     @Override
  19.     public void onNothingSelected(AdapterView<?> parentView) {
  20.         // 如果沒有選擇的話
  21.     }
  22. }
複製代碼
記得要先在前面做宣告 否則巢狀類別抓不到spinner1.spinner2

註冊得部分如下
  1. spinner1.setOnItemSelectedListener(new SpinnerSelectedListener())
  2. spinner2.setOnItemSelectedListener(new SpinnerSelectedListener())
複製代碼
不過這樣子選的話 你只要改其中一個spinner就會換介面
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則