Java 旋转器与变频器的应用

Java 旋转器与变频器的应用,java,android,spinner,converter,Java,Android,Spinner,Converter,我正在创建converter(distance)4 Android。我的想法是这样做: EditText-用户输入值f.e.40 两个微调器-第一个设置起始单位,第二个设置目标单位f.e.第一个[cm]秒[m] 带结果的文本视图 计算按钮 我用计算值做函数,问题是如何选择单位 这是我不起作用的代码 spinnerP = (Spinner) findViewById(R.id.spinnerPocz); ArrayAdapter<CharSequence> adapterP =

我正在创建converter(distance)4 Android。我的想法是这样做:

  • EditText-用户输入值f.e.40
  • 两个微调器-第一个设置起始单位,第二个设置目标单位f.e.第一个[cm]秒[m]
  • 带结果的文本视图
  • 计算按钮
  • 我用计算值做函数,问题是如何选择单位 这是我不起作用的代码

    spinnerP = (Spinner) findViewById(R.id.spinnerPocz);
        ArrayAdapter<CharSequence> adapterP = ArrayAdapter.createFromResource(this, R.array.odlegloscArray, R.layout.support_simple_spinner_dropdown_item);
        adapterP.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
        spinnerP.setAdapter(adapterP);
    
        spinnerP.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //Toast.makeText(getBaseContext(), parent.getItemIdAtPosition(position) + " selected", Toast.LENGTH_LONG).show();
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
    
            }
        });
    
        spinnerD = (Spinner) findViewById(R.id.spinnerDoc);
        ArrayAdapter<CharSequence> adapterD = ArrayAdapter.createFromResource(this, R.array.odlegloscArray, R.layout.support_simple_spinner_dropdown_item);
        adapterD.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
        spinnerD.setAdapter(adapterD);
    
        spinnerD.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if (spinnerP.getItemAtPosition(position) == 0) {
                    switch (position) {
                        case 0:
                            Toast.makeText(getApplicationContext(), "zmień wartość docelową", Toast.LENGTH_SHORT).show(); //units the same
                            break;
                        case 1:
                            btnOblicz.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    metryNaKm(); //meters to km
                                }
                            });
                            break;
                        case 2:
                            btnOblicz.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    metryNaCm(); //meters to cm
                                }
                            });
                            break;
                        case 3:
                            btnOblicz.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    metryNaCale(); //meters to inch
                                }
                            });
                            break;
    //etc.
    //then there is
    else if (spinnerP.getItemAtPosition(position) == 1) {
                    switch (position) {
                        case 0:
                            btnOblicz.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    kilometryNaM(); //km to meters
    //etc
    
    spinnerP=(Spinner)findviewbyd(R.id.spinnerPocz);
    ArrayAdapter adapterP=ArrayAdapter.createFromResource(此,R.array.odlegloscArray,R.layout.support\u simple\u spinner\u dropdown\u项);
    adapterP.setDropDownViewResource(R.layout.support\u simple\u spinner\u dropdown\u项目);
    喷丝头固定接头(adapterP);
    spinnerP.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
    @凌驾
    已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
    //Toast.makeText(getBaseContext(),parent.getItemIdAtPosition(position)+“selected”,Toast.LENGTH_LONG.show();
    }
    @凌驾
    未选择公共无效(AdapterView父级){
    }
    });
    喷丝头=(喷丝头)findViewById(R.id.spinnerDoc);
    ArrayAdapter adapterD=ArrayAdapter.createFromResource(这个,R.array.odleglosscarray,R.layout.support\u simple\u spinner\u dropdown\u项);
    adapterD.setDropDownViewResource(R.layout.support\u simple\u spinner\u dropdown\u项目);
    喷丝头固定接头(适配器D);
    spinnerD.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
    @凌驾
    已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
    if(喷丝头getItemAtPosition(位置)==0){
    开关(位置){
    案例0:
    Toast.makeText(getApplicationContext(),“zmieńwartośćdocelową”,Toast.LENGTH_SHORT)。show();//单位相同
    打破
    案例1:
    btnOblicz.setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图v){
    metryNaKm();//米到公里
    }
    });
    打破
    案例2:
    btnOblicz.setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图v){
    metryNaCm();//米到厘米
    }
    });
    打破
    案例3:
    btnOblicz.setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图v){
    metryNaCale();//米到英寸
    }
    });
    打破
    //等等。
    //还有
    else if(喷丝头getItemAtPosition(位置)==1){
    开关(位置){
    案例0:
    btnOblicz.setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图v){
    千米数();//千米到米
    //等
    

    我想这样做很可怕,但我不是高级,我愿意接受建议

    你应该做的是删除所有的OnItemSelectedListener,只为你的按钮使用一个OnClickListener。然后使用getSelectedItemPosition

    btnOblicz.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    
              int selectedP = spinnerP.getSelectedItemPosition();
              int selectedD = spinnerD.getSelectedItemPosition();        
    
              switch(selectedP){
                 case 0:
                      switch(selectedD){
                           case 1:
                                convertFrom0to1();
                                break;
                           case 2:
                                convertFrom0to2();
                           ....
                       }
                       break;
                ....
               }
        }
    });
    

    您应该做的是删除所有OnItemSelectedListener,并仅为按钮使用一个OnClickListener,然后使用getSelectedItemPosition

    btnOblicz.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    
              int selectedP = spinnerP.getSelectedItemPosition();
              int selectedD = spinnerD.getSelectedItemPosition();        
    
              switch(selectedP){
                 case 0:
                      switch(selectedD){
                           case 1:
                                convertFrom0to1();
                                break;
                           case 2:
                                convertFrom0to2();
                           ....
                       }
                       break;
                ....
               }
        }
    });