2013-08-07 61 views
1

我設法讓微調器值顯示在文本框中,但我需要將值彼此分開。所以我必須將微調器1的值與微調器2的值分開。但是我不確定如何做到這一點。劃分兩個微調器值

這裏是我的代碼:

public class CurrencyActivity extends Activity { 


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


final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 
final Spinner spinner2 = (Spinner) findViewById(R.id.spinner2); 
final EditText etResult = (EditText) findViewById(R.id.etResult); 
final MyData items[] = new MyData[3]; 
items[0] = new MyData("EUR, Euro","1.00"); 
items[1] = new MyData("GBP, British Pound","5.00"); 
items[2] = new MyData("USD, US Dollar","15.00"); 

ArrayAdapter<MyData> adapter = new ArrayAdapter <MyData>(this, android.R.layout.simple_spinner_item, items); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner1.setAdapter(adapter); 
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 


    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){ 
     MyData d = items[pos]; 
     etResult.setText(d.getValue()); 
} 

    @Override 
    public void onNothingSelected(AdapterView parent){ 
     //Do nothing 

} 
}); 



spinner2.setAdapter(adapter); 
spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){ 
     MyData d = items[pos]; 
     etResult.setText(d.getValue()); 
     } 

    @Override 
    public void onNothingSelected(AdapterView parent){ 
     //Do nothing 
    } 
}); 

我創建了具有這些方法的MyData的類

public class MyData { 

    public MyData(String spinnerText, String value){ 
     this.spinnerText = spinnerText; 
     this.value = value; 
    } 
    public String getSpinnerText(){ 
     return spinnerText; 
    } 
    public String getValue(){ 
     return value; 
    } 
    public String toString(){ 
     return spinnerText; 
    } 
    String spinnerText; 
    String value; 

} 

謝謝

+0

與你以前的問題相關http://stackoverflow.com/questions/17871238/dividing-values-in-spinners-android和這個http://stackoverflow.com/questions/18045703/dividing-values-in-2 -spinners? – Raghunandan

+0

@Raghunandan是的,但我做了一些更多的進步。另一種解決方案對我無效。 – akkki

回答

0

我能解決這個問題。

我將MyData類中的值的類型從String更改爲double。 我在CurrencyActivity中創建了兩個名爲valA和valB的雙字段。

然後在方法中,我將微調器的值賦值給val域,例如 valA = d.getValue();

然後我創建了一個新的方法,只是做了valA/valB;

這裏是幫助更容易理解的代碼。

public class CurrencyActivity extends Activity { 
double valA; 
double valB; 

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


final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 
    final Spinner spinner2 = (Spinner) findViewById(R.id.spinner2); 
    final EditText etResult = (EditText) findViewById(R.id.etResult); 
    final MyData items[] = new MyData[3]; 
    items[0] = new MyData("EUR, Euro",1); 
    items[1] = new MyData("GBP, British Pound",5); 
    items[2] = new MyData("USD, US Dollar",15); 

ArrayAdapter<MyData> adapter = new ArrayAdapter <MyData>(this, android.R.layout.simple_spinner_item, items); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner1.setAdapter(adapter); 
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 


    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){ 
     MyData d = items[pos]; 
     valA=d.getValue(); 
} 

    @Override 
    public void onNothingSelected(AdapterView parent){ 
     //Do nothing 

} 
}); 



spinner2.setAdapter(adapter); 
spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){ 
     MyData d = items[pos]; 
     valB = d.getValue(); 
     } 
    @Override 
    public void onNothingSelected(AdapterView parent){ 
     //Do nothing 
    } 
}); 

public void divideVals(){ 

    double result = valA/valB; 
    etResult.setText(String.valueOf(result)); 
} 

希望這可以幫助別人,因爲它花了我很多時間來解決這個問題,最終這是非常簡單的。

0

有一個簡單的解決方案,但我認爲你是混合代碼上面這兒。
Integer.parseInt(d.getValue())會給你一個有效的int,你可以執行任何數學函數,但在你的代碼中,當每個微調器選擇被改變時,字面上覆蓋MyData d
您可以將另一個字段添加到您的MyData類中,該類將存儲您想要的任何值作爲int,然後簡單地使用mydata.getVal(),前提是mydata類型爲/類MyData

+0

謝謝,您的解決方案幫助我朝着正確的方向前進。我在CurrencyActivity中創建了另外兩個雙字段,例如valA和valB,然後valA = d.getValue()然後我創建了一個方法,只是做了valA/valB; – akkki