2016-08-02 44 views
-1

我有以下代碼:如何知道微調器上選擇的項目?

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

    Object item = parent.getItemAtPosition(position); 
    Toast.makeText(this, "You selected " +item.toString(), Toast.LENGTH_SHORT).show();  

} 

@Override 
public void onNothingSelected(AdapterView<?> parent) { 

    Toast.makeText(this, "You didn't select any preset", Toast.LENGTH_SHORT).show(); 

} 

而且下面的數組:

<string-array name="presets_array"> 
    <item>Light Car</item> 
    <item>Medium Car</item> 
    <item>Heavy Car</item> 
    <item>Van</item> 
    </string-array> 

它的正常工作,當我選擇輕型汽車它顯示正確的文本等與他人。 但我想做更多的事情,如果選擇的東西是範,改變重量值,如果中型車,其他成本等。

我想我必須使用開關,但我不知道它是如何工作的。

回答

2

有一些選擇。你應該選擇哪個適合你最好的...

只是檢查位置

良好的性能,但如果你改變數組順序,則必須重新排序switch語句

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    Object item = parent.getItemAtPosition(position); 

    Toast.makeText(this, "You selected " + item.toString(), Toast.LENGTH_SHORT).show(); 

    swith(position) { 
     case 0: 
      // CODE for Light Car 
      break; 
     case 1: 
      // CODE for Medium Car 
      break; 
     case 2: 
      // CODE for Heavy Car 
      break; 
     case 3: 
      // CODE for Van 
      break; 
    } 
} 

字符串檢查

性能低下,因爲您必須在最差情況下比較字符串幾次。

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    Object item = parent.getItemAtPosition(position); 

    Toast.makeText(this, "You selected " + item.toString(), Toast.LENGTH_SHORT).show(); 

    if(item.toString().equals("Light Car")) { 
     // CODE 
    } else if(item.toString().equals("Medium Car")) { 
     // CODE 
    } else if(item.toString().equals("Heavy Car")) { 
     // CODE 
    } else if(item.toString().equals("Van")) { 
     // CODE 
    } 
} 
+0

第一個工作適合我。謝謝。 –

0

你可以寫類似的代碼onItemSelected方法在這裏面代碼:

switch (item) 

{ 情況下,輕型汽車: // TODD 休息;

case範: // TODO break; .......

}

+0

但是我在每種情況後究竟做了什麼?輕型汽車,範...不被識別。我可以放入R.array.presets_array但不是每個字符串,它們不會出現在R.string下。 –

+0

我從您的問題中瞭解到,您希望使用微調器中的不同選定項目執行不同的操作,能否告訴我您要對每個選定項目執行什麼操作,以及如果您可以從應用程序給我一個佈局屏幕快照。和xaml代碼。 – RadiBarq

相關問題