2017-07-07 74 views
-5

我有一個問題。我創建了微調,一切都運行的應用程序不會崩潰,但它不會改變INT價格的價值,既不的setText不上位置0工作有條件的微調器

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(); 
} 

}

因此,在選擇項目,我想將文本設置爲特定文本,並更改​​價格。誰能幫忙?

+0

使用POJO代替串......像'類{當然字符串名稱;詮釋價格; }'重寫toString方法並讓它返回name ...然後將'getItemAtPosition'結果轉換爲'course' ...'cors'是一個字符串,因此它不能等於0,1,2,3 .. – Selvin

回答

0

使用位置編號檢查條件。

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 == 1不起作用:/ –

+0

然後嘗試將位置處的值與courseArray進行比較,請參閱編輯。 – Ali

+0

nope,應用程序在運行應用程序時崩潰 –

0

使用switch敘述:

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

這也不起作用:( –