首页 > 解决方案 > 微调器问题:如何在微调器中调用列表项并分别对每个项使用数学?

问题描述

我有一段代码,我一直在处理四种转换比率,具体取决于在微调器中选择的单位转换选项。根据用户的选择,我将如何称呼每个单独的比率。

例如,如果在微调器中选择了选项 1,则要使用的转换将是Miles to KilometersresultOutput = userInput * 1.6093由于转换将是英里的用户输入,因此公里会导致miles * 1.6093. 现在我将如何将那个和多个其他 if 语句注入到这个源代码中?我会创建一个新方法还是直接在里面做public void onItemSelected

我会输入: if(conversionType = list.get(0)){ resultOutput = userInput * 1.6093

我只需要一个大致的方向来解决这个问题,因为我已经坚持了几天。感谢您提供任何帮助!

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){}
}

标签: javaandroidarrays

解决方案


我对您的代码进行了更改:

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){}

}

你在里面有很多初始化代码onItemSelected但是应该放在你activity的onCreate()
语句switch中让你选择做什么用用户的选择。您将在那里进行所需的转换。
onCreate()你有所有的初始化代码:变量和视图声明,设置适配器和微调器的侦听器等。


推荐阅读