java - 微调器问题:如何在微调器中调用列表项并分别对每个项使用数学?
问题描述
我有一段代码,我一直在处理四种转换比率,具体取决于在微调器中选择的单位转换选项。根据用户的选择,我将如何称呼每个单独的比率。
例如,如果在微调器中选择了选项 1,则要使用的转换将是Miles to Kilometers
或resultOutput = 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){}
}
解决方案
我对您的代码进行了更改:
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()
你有所有的初始化代码:变量和视图声明,设置适配器和微调器的侦听器等。
推荐阅读
- ionic2 - One Signal & Ionic 3:不在特定页面上显示通知
- excel - Excel VB文件夹搜索速度提升
- elasticsearch - 如何修复弹性搜索中未分配的分片
- css - 为什么推荐的点击目标大小以像素为单位?
- python-3.x - Pyspark - 将数据帧写入 csv
- wordpress - Wordpress 无法解释的主题问题
- visual-studio - 未填写一个文本框时解决方案崩溃
- angular - 角度 6 问题 uisng flatMap。怎么了?
- c++ - Bullet 3 动力学不适用于非球体
- javascript - 如何在php中插入另一个表中的数组单选按钮的选中值