2017-07-07 4 views
-5

Ich habe ein Problem. Ich habe Spinner erstellt, und alles App läuft, ohne abzustürzen, aber es wird nicht Wert von int Preis ändern, weder setText funktioniert nichtBedingte Spinner

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

Button calculateBtn; 
EditText userEcts; 
TextView ectsPrice; 
TextView summary; 
Spinner courses; 
String cors; 
int price = 200; 

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

    userEcts = (EditText) findViewById(R.id.ects_input); 
    summary = (TextView) findViewById(R.id.text_summary); 
    courses = (Spinner) findViewById(R.id.course_spinner); 

    calculateBtn = (Button) findViewById(R.id.calculate); 
    calculateBtn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //When the button is clicked, call the calculate method. 
      calculate(); 
     } 
    }); 

    final String[] courseArray = new String[4]; 
    { 
     courseArray[0] = "Preddiplomski studij Menadžment"; 
     courseArray[1] = "Preddiplomski studij Promet"; 
     courseArray[2] = "Preddiplomski Upravni studij"; 
     courseArray[3] = "Specijalistički studij Menadžment"; 
    } 

    ArrayAdapter courseAdapter = new ArrayAdapter(this, 
      android.R.layout.simple_spinner_item, courseArray); 
    courseAdapter.setDropDownViewResource(android.R.layout.select_dialog_singlechoice); 
    courses.setAdapter(courseAdapter); 

    courses.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ 

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

      //Get item from Spinner and store in string conductorSize........ 
      cors = parent.getItemAtPosition(pos).toString(); 
      if (cors.equals(0)) { 
       ectsPrice.setText("200"); 
       price = 200; 
      } else if (cors.equals(1)) { 
       ectsPrice.setText("250"); 
       price = 250; 
      } else if (cors.equals(2)) { 
       ectsPrice.setText("300"); 
       price = 300; 
      } else if (cors.equals(3)) { 
       ectsPrice.setText("350"); 
       price = 350; 
      } else { 
       //Do nothing 
      } 
     } 

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

public void calculate() { 
    //gets entered text from the EditText,and convert to integers. 
    if (!TextUtils.isEmpty(userEcts.getText().toString())) { 
     Double ects = Double.parseDouble(userEcts.getText().toString()); 
     //do the calculation 
     Double calculatedPrice = ects * price; 
     //set the value to the TextView, to display on screen. 
     summary.setText("Ukupno za platit: " + Double.toString(calculatedPrice) + "kn"); 
    } else { 
     Toast.makeText(this, "Niste unijeli broj bodova", Toast.LENGTH_SHORT).show(); 
    } 
} 

@Override 
public void onClick(View v) { 
    calculate(); 
} 

}

Also, bei der Auswahl Artikel auf Position 0 Ich möchte Text auf einen bestimmten Text setzen und den Preis ändern. Kann jemand helfen?

+0

Verwendung POJO statt String ... wie 'Klasse natürlich {String name; int Preis; } 'override toString Methode und lassen Sie es zurückgeben Name ... dann Cast' getItemAtPosition' Ergebnis zu 'Kurs' ...' Cors' ist eine Zeichenfolge, so kann es nicht gleich 0, 1, 2, 3 .. – Selvin

Antwort

0

Verwenden Sie die Positionsnummer, um den Zustand zu überprüfen.

String[] courseArray = new String[4]; 
    { 
     courseArray[0] = "Preddiplomski studij Menadžment"; 
     courseArray[1] = "Preddiplomski studij Promet"; 
     courseArray[2] = "Preddiplomski Upravni studij"; 
     courseArray[3] = "Specijalistički studij Menadžment"; 
    } 

    ArrayAdapter courseAdapter = new ArrayAdapter(this, 
      android.R.layout.simple_spinner_item, courseArray); 
    courseAdapter.setDropDownViewResource(android.R.layout.select_dialog_singlechoice); 
    courses.setAdapter(courseAdapter); 

    courses.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ 

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

      //Get item from Spinner and store in string conductorSize........ 
      cors = parent.getItemAtPosition(pos).toString(); 
      if (cors.equals(courseArray[0])) { 
       ectsPrice.setText("200"); 
       price = 200; 
      } else if (cors.equals(courseArray[1])) { 
       ectsPrice.setText("250"); 
       price = 250; 
      } else if (cors.equals(courseArray[2])) { 
       ectsPrice.setText("300"); 
       price = 300; 
      } else if (cors.equals(courseArray[3])) { 
       ectsPrice.setText("350"); 
       price = 350; 
      } else { 
       //Do nothing 
      } 
     } 

     public void onNothingSelected(AdapterView parent) { 
      // Do nothing. 
     } 
    }); 
} 
+0

pos == sein 1 funktioniert nicht:/ –

+0

Dann versuchen Sie den Wert an der Position mit courseArray zu vergleichen, siehe Bearbeiten. – Ali

+0

Nö, App stürzt auf läuft die App –

0

eine Switch-Anweisung verwenden:

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

     switch(pos){ 
      case 0: 
       ectsPrice.setText("200"); 
       price = 200; 
       break; 
      case 1: 
       ectsPrice.setText("250"); 
       price = 250; 
       break; 
      case 2: 
       ectsPrice.setText("300"); 
       price = 300; 
       break; 
      case 3: 
       ectsPrice.setText("350"); 
       price = 350; 
       break; 
     } 
    } 
+0

das funktioniert auch nicht :( –

Verwandte Themen