使用微调器转换
using spinner to converter
我正在创建转换器(距离)4 Android。我的想法是这样做:
- EditText - 用户输入值 f.e。 40
- 两个微调器 - 第一个设置启动单元,第二个设置目标单元 f.e。第一[厘米]第二[米]
- 带结果的 TextView
- 计算按钮
我做了计算值的函数,问题是如何选择单位
这是我的代码,但没有用
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
我想这样做很糟糕,但我并不先进,我愿意接受建议
您应该做的是删除所有 OnItemselectedListener,并只为您的按钮使用一个 OnClickListener。然后使用getSelectedItem Position.
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;
....
}
}
});
我正在创建转换器(距离)4 Android。我的想法是这样做:
- EditText - 用户输入值 f.e。 40
- 两个微调器 - 第一个设置启动单元,第二个设置目标单元 f.e。第一[厘米]第二[米]
- 带结果的 TextView
- 计算按钮
我做了计算值的函数,问题是如何选择单位 这是我的代码,但没有用
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
我想这样做很糟糕,但我并不先进,我愿意接受建议
您应该做的是删除所有 OnItemselectedListener,并只为您的按钮使用一个 OnClickListener。然后使用getSelectedItem Position.
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;
....
}
}
});