Android微调器:如何为它们编写java代码?

Android微调器:如何为它们编写java代码?,java,android,android-arrayadapter,android-spinner,onclicklistener,Java,Android,Android Arrayadapter,Android Spinner,Onclicklistener,我想做一个平均成绩计算器。我有两列中的一组微调器。每个7个。我已经在下拉列表中输入了要显示的字符串数组。现在,我想用java编写代码,说明如果用户从下拉列表中选择“4”,那么输入应该被视为数字4,稍后将其乘以,例如,如果用户选择A级,则乘以4。我该怎么做?我创建了一个阵列适配器,但它不工作。我得到的答案是“南”。我查过了,它说当数字未定义时显示Nan。任何帮助都将不胜感激。谢谢大家! 我应该使用类似于按钮的onClickListener吗?如果用户选择A级,计算机如何知道它必须将成绩点等于4 这

我想做一个平均成绩计算器。我有两列中的一组微调器。每个7个。我已经在下拉列表中输入了要显示的字符串数组。现在,我想用java编写代码,说明如果用户从下拉列表中选择“4”,那么输入应该被视为数字4,稍后将其乘以,例如,如果用户选择A级,则乘以4。我该怎么做?我创建了一个阵列适配器,但它不工作。我得到的答案是“南”。我查过了,它说当数字未定义时显示Nan。任何帮助都将不胜感激。谢谢大家!

我应该使用类似于按钮的onClickListener吗?如果用户选择A级,计算机如何知道它必须将成绩点等于4

这就是我所做的(显然是错误的):


您可以有一个值的hashmap,然后根据所选项目选择值

HashMap<String, Double> mGrades;

public void test(){
    Spinner spinner1 = new Spinner(this);

    mGrades = new HashMap<String, Double>();
    mGrades.put("A+", 4.00);
    mGrades.put("A", 4.00);
    //Etc.....

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mGrades.keySet().toArray(new String[0]));

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner1.setAdapter(adapter);

    spinner1.setOnItemSelectedListener(this);
}

public void onItemSelected(AdapterView<?> parent, View view, 
        int pos, long id) {
    // An item was selected. You can retrieve the selected item using
    // parent.getItemAtPosition(pos)
    Log.d("TAG", String.valueOf(mGrades.get(mGrades.keySet().toArray()[pos])));
}

public void onNothingSelected(AdapterView<?> parent) {
    // Another interface callback
}
HashMap-mGrades;
公开无效测试(){
喷丝器喷丝器1=新喷丝器(此);
mGrades=newhashmap();
主席:付诸表决(“A+”,4.00);
主席:付诸表决(A),4.00;
//等等。。。。。
ArrayAdapter=newArrayAdapter(这是android.R.layout.simple_微调器_项,mGrades.keySet().toArray(新字符串[0]);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头1.设置适配器(适配器);
喷丝头1.SetonimSelectedListener(此);
}
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
//已选择一个项目。您可以使用
//父项getItemAtPosition(pos)
Log.d(“TAG”,String.valueOf(mGrades.get(mGrades.keySet().toArray()[pos]));
}
未选择公共无效(AdapterView父级){
//另一个接口回调
}

它可能会比使用其他方法慢一点,但是嘿。这很简单。

我建议你这样做:

在重新创建之前:

float[] gradeValues = { 4f, 3.67f, 3.33f, 3.00f, 2.67f, 2.33f, 2.00f,1.33f,1.00f,0.67f,0.00f,0.00f};

String [] gradeAlpabetic = {"A+","A","A-","B+","B","B-","C+","C","C-","D+","D","D-","F","ABS"};
这里,第一个值4f的位置为0,下一个值的位置为1,依此类推

值“A+”将位于微调器上的位置0,因此通过这种方式我们可以知道哪个级别与哪个级别值对应

在onViewCreated或OnCreate中:

ArrayAdapter<String> gradesArrayAdap = new ArrayAdapter<String>(
            getActivity(), R.layout.spinnerlayout, gradeAlphabetic);

    gradesSpinner.setAdapter(GradesArrayAdapter);


  gradeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {

            getGrades();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {

        }
    });

希望有帮助。

我尝试过创建类似onItemSelected和onNothingSelected的方法。他们犯了错误。它说void不是正确的返回类型。所以我改变了。现在它给了我一些其他错误。您可能希望实现OnItemSelectedListener。这可能会解决问题。
ArrayAdapter<String> gradesArrayAdap = new ArrayAdapter<String>(
            getActivity(), R.layout.spinnerlayout, gradeAlphabetic);

    gradesSpinner.setAdapter(GradesArrayAdapter);


  gradeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {

            getGrades();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {

        }
    });
public void getGrades(){


       String grade = gradeSpinner.getSelectedItemPosition();
       float theGrade = Float.parseFloat(gradeValue(grade);

      System.out.println("Your grade in float is: " + theGrade);

}