有条件的微调器

问题描述:

我有一个问题。我创建了微调,一切都运行的应用程序不会崩溃,但它不会改变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

使用位置编号检查条件。

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,应用程序在运行应用程序时崩溃 –

使用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

这也不起作用:( –