2013-05-06 97 views
0

我是新開發的android開發人員,我在C#windows編程方面有一些經驗,但也很少。我正在研究一個使用spinners的android應用程序。到目前爲止,我選擇了一個教程來製作微調項目,並在選擇微調項目時在文本視圖中顯示微調文本。代碼lookes這樣的:在Android開發中使用微調框

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    spinner =(Spinner)findViewById(R.id.sp); 
    text=(TextView)findViewById(R.id.tv); 
    ArrayAdapter<CharSequence> adapter =ArrayAdapter.createFromResource(this, R.array.spinnerarray, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(new function()); 
} 


public class function implements OnItemSelectedListener { 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View arg1, int pos, 
      long id) { 
     // TODO Auto-generated method stub 
     String str=parent.getItemAtPosition(pos).toString(); 
     text.setText(str); 

    } 

我想打一個應用程序,這將計算一些積分,同檔次的用戶會選擇。示例:微調器將包含評分,如負片(1),正片(2),好片(3),非常好片(4),優秀片(5)。我想要達到的目的是,當用戶選擇一個等級時,可以說非常好,應用程序將使用非常好的等級(等於4),並將其轉換爲由我確定的某些點(1 = 20,2 = 40.3 60.4 = 80.5 = = 100)。這些點將在以後用於計算,但我不知道如何將點分配給某個等級。我希望你能理解我的問題,並感謝你的幫助。

我有相同的應用程序的窗口,那裏我只是使用類似的東西:if(veryGood.IsSelected == true){points = 20},我想在這裏實現相同的效果。

+0

http://stackoverflow.com/questions/5424841/whats-the-correct-way-to-implement-key-value-pair-in-spinner-in-android – Sudhee 2013-05-06 15:57:56

+0

你可以使用'switch(pos) 'on'onItemSelected'並設置如'case 0:points = 20; case 1:points = 40'等等... – Wamasa 2013-05-06 15:59:58

+0

所以這個開關就像C#一樣工作,你可以說if(veryGood.IsSelected = true) {points = 20};等等? – 2013-05-06 16:03:25

回答

0

你需要一個簡單的修改你的函數類:

public class function implements OnItemSelectedListener { 

    private final static int[] grades = new int[]{20,40,60,80,100}; //change in whatever you want. The length of the array must be the same of the adapter, or an ArrayIndexOutOfBoundException may be throwed. 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View arg1, int pos, long id) { 
     text.setText(grades[pos] + " points!"); 
    } 
} 

PS:在Java是一個很好的做法,例如在類名使用大寫初始功能而不是功能。

+0

是的,在這種情況下工作,但應用程序將有幾個spinners,並不是每個職系都有這樣的數字,有些像98,95,67等...而且我不想設置像20分的文本,我只是希望應用程序在例子98上設置很好,因爲我將在以後的計算中使用它... – 2013-05-06 17:38:18

+0

我編輯了答案 – Spotlight 2013-05-06 18:05:19

+0

非常感謝。 – 2013-05-06 18:27:34