如何根据Android Spinner上选择的ITEM将Integer Value分配给变量。

时间:2014-01-16 23:15:04

标签: android spinner android-spinner

我为我的Spinner设置了一个数组适配器,以显示一个Grades(A +,A,...等)的下拉列表。 我需要的只是当用户选择A +时,myApp应该将其理解为浮点值10,这样A +(= 10)的值可以在需要整数来计算整体等级的公式中使用。 例如,如果用户选择B +,我的APP应该理解为8.5,可以在公式中使用。

基本上,我希望USERS在微调器上看到等级,但我需要它的实际值才能进行计算。

我可以在旋转器上使用物品的位置吗? 请举例说明如何检索它。

My String资源:

<?xml version="1.0" encoding="utf-8"?>
      <resources>
         </string-array>
          <string-array name="grade_list">
           <item>A+</item>
           <item>A</item>
          <item>A-</item>
          <item>B+</item>
          <item>B</item>
          <item>B-</item>
          <item>C+</item>
          <item>C</item>
          <item>C-</item>
          <item>D</item>
          <item>E</item>
          <item>U</item>
      </resources>

MY JAVA CODE

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class CSEsem1 extends Activity implements OnClickListener{

Spinner cs1spin1;
Spinner cs1spin2;
Spinner cs1spin3;
Spinner cs1spin4;
Spinner cs1spin5;
Spinner cs1spin6;
Spinner cs1spin7;



protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);


    setContentView(R.layout.laycsesem1);
        ArrayAdapter<CharSequence> grade = ArrayAdapter.createFromResource(this,
    R.array.grade_list, android.R.layout.simple_spinner_item);
    grade.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    cs1spin1.setAdapter(sem_adapter);

            cs1spin1.setOnItemSelectedListener(this);

            @Override
      public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {

          // Completely blank after this.

        }

我需要为所有的微调器应用相同的东西。我的XML文件中共有7个。


我想到的一个方法是,由于我的Spinners上的ITEMS可以转换为String,我可以使用一个开关(String),但Android是在Java 1.5,1.6下编译的。而switch(String)是一个在Java 1.7中有特色。所以不能用这个。


3 个答案:

答案 0 :(得分:0)

我建议您创建一个包含

等对象的自定义适配器
public class Grade{
    String mLabel;
    Float mValue;
.......
}

查看answerexample 因此,将该对象列表定义为Acticity / Fragment的成员 之后在onItemSelected中,您将按指定位置对象。

答案 1 :(得分:0)

您可以使用HashMap,您可以使用“A +”作为键,使用10作为值。因此,当用户点击“A +”时,您可以在HashMap中找到具有值A +的键,因此您可以找到值10.

答案 2 :(得分:0)

以下是如何使用Hashap进行操作的示例:

    Map<String, Double> grades = new HashMap<String, Double>();

    grades.put("A+", 10.0);
    grades.put("B+", 8.5);

    //You can use grades.get(your_spinner.getSelectedItem())
    System.out.println(grades.get("A+"));