简体   繁体   English

微调器问题:如何调用微调器中的列表项,并分别对每个数学项使用数学?

[英]Spinner issues: How do I call list items within the spinner and use math for each one separately?

I have a snippet of code I've been working on with four conversion ratios depending on what unit conversion option is picked within the spinner. 我有一段代码正在使用四种转换率,具体取决于微调器中选择了哪种单位转换选项。 How would I call each individual ratio depending on what the user selects. 我将如何称呼每个单独的比率,具体取决于用户的选择。

For Example , If option 1 is selected in the spinner then the conversion to use would be Miles to Kilometers or resultOutput = userInput * 1.6093 Since the conversion would be a userInput of miles then kilometers results in the miles * 1.6093 . 例如 ,如果在微调器中选择了选项1,则要使用的转换将是Miles to KilometersresultOutput = userInput * 1.6093因为转换将是英里的userInput,所以公里将导致miles * 1.6093 Now how would I inject that and multiple other if statements into this source code? 现在,我如何将其以及其他多个if语句注入此源代码中? Would I create a new method or just do it right inside public void onItemSelected ? 我将创建一个新方法还是就在public void onItemSelected内部执行它?

Would I type: if(conversionType = list.get(0)){ resultOutput = userInput * 1.6093 ? 我可以输入: if(conversionType = list.get(0)){ resultOutput = userInput * 1.6093吗?

I just need a general direction on where to go with this as I have been stuck on it for a few days. 我已经坚持了几天,只需要一个关于该如何处理的一般方向。 Thanks for any help available! 感谢您提供任何帮助!

MainActivity.java : MainActivity.java

package com.example.corey.unitconversionappbycoreywhitlow;

import java.util.ArrayList;
import java.util.List;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements OnItemSelectedListener {

    Spinner spinnerConversions;
    TextView conversionFrom, conversionTo, outputResult;
    EditText userInput;
    List<String> list = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        conversionFrom = findViewById(R.id.fromValue);
        conversionTo = findViewById(R.id.toValue);
        outputResult = findViewById(R.id.resultOutput);
        userInput = findViewById(R.id.numInput);
    }

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){
        spinnerConversions = findViewById(R.id.conversionSpinner);
        spinnerConversions.setOnItemSelectedListener(this);

        list.add("Miles to Kilometers");
        list.add("Kilometers to Miles");
        list.add("Inches to Centimeters");
        list.add("Centimeters to Inches");
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, list);

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

        spinnerConversions.setAdapter(adapter);
        String conversionType = list.get(1);
        String[] units = conversionType.split("to");
        String conFrom = units[0].trim();
        String conTo = units[1].trim();

        conversionFrom.setText(conFrom);
        conversionTo.setText(conTo);
    }

    public void onNothingSelected(AdapterView<?> parent){}
}

I made changes to your code: 我对您的代码进行了更改:

public class MainActivity extends AppCompatActivity implements OnItemSelectedListener {

    Spinner spinnerConversions;
    TextView conversionFrom, conversionTo, outputResult;
    EditText userInput;
    List<String> list = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        conversionFrom = findViewById(R.id.fromValue);
        conversionTo = findViewById(R.id.toValue);
        outputResult = findViewById(R.id.resultOutput);
        userInput = findViewById(R.id.numInput);

        spinnerConversions = findViewById(R.id.conversionSpinner);

        list.add("Miles to Kilometers");
        list.add("Kilometers to Miles");
        list.add("Inches to Centimeters");
        list.add("Centimeters to Inches");
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, list);

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

        spinnerConversions.setAdapter(adapter);

        String conversionType = list.get(0);
        String[] units = conversionType.split("to");
        String conFrom = units[0].trim();
        String conTo = units[1].trim();

        conversionFrom.setText(conFrom);
        conversionTo.setText(conTo);

        spinnerConversions.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Double d = 0.0;
                try {
                    d = Double.parseDouble(userInput.getText().toString().trim());
                } catch (NumberFormatException e) {
                    e.printStackTrace();
                }
        switch (position){
            case 0:
                outputResult.setText(d * 1.6093 + "");

                break;
            case 1:
                //Do something

                break;
            case 2:
                //Do something

                break;
            case 3:
                //Do something

                break;
        }
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent){}

}

You had a lot of initialization code in onItemSelected but it should be placed in your activity's onCreate() 您在onItemSelected有很多初始化代码,但应将其放在活动的onCreate()
The switch statement allows you to choose what to do with the user's choice. 使用switch语句可以选择如何处理用户的选择。 You will make there the conversions you need. 您将在那里进行所需的转换。
In onCreate() you have all the initialization code: variables and views declarations, setting the adapter and the listener for the spinner etc. onCreate()您具有所有初始化代码:变量和视图声明,设置微调器的适配器和侦听器等。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM