Android开发的新手。
我一直在引用这个StackOverflow线程:Android: two Spinner onItemSelected(),但到目前为止,尝试使用两个微调器和一个提交按钮构建一个简单的程序时遇到了问题。我正在尝试开发的简单程序捕获在Spinners和提交中选择的任何内容,确实是“'”。
如果我使用下面的onItemSelectedListener,我该如何实现一个onClick Listener来捕获两个微调器中当前选择的内容?是否相同'查看'传递到' onClick'听众还是没有?
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
Spinner spinner = (Spinner) parent;
if(spinner.getId() == R.id.spinner1)
{
//do this
}
else if(spinner.getId() == R.id.spinner2)
{
//do this
}
}
非常感谢你的帮助!
修改
在推荐Nolly J的建议代码之后,我几乎就在那里。似乎仍未设置spinnerFromValue和spinnerToValue字符串。我有:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
distValue = (EditText) findViewById(R.id.distValue);
distResult = (EditText) findViewById(R.id.distResult);
this.arraySpinner = new String[]{"Miles", "Kilometers", "Meters", "Feet", "Inches", "Centimeters"};
Spinner spinnerFrom = (Spinner) findViewById(R.id.spinnerFrom);
Spinner spinnerTo = (Spinner) findViewById(R.id.spinnerTo);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, arraySpinner);
spinnerFrom.setAdapter(adapter);
spinnerTo.setAdapter(adapter);
buttonConvert = (Button) findViewById(R.id.buttonConvert);
buttonConvert.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// use the two variables to do what you want.
// Example
distResult.setText(spinnerFromValue + spinnerToValue);
}
});
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
public class SpinnerActivity extends Activity implements AdapterView.OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
Spinner spinner = (Spinner) parent;
spinnerFromValue = parent.getSelectedItem().toString();
spinnerToValue = parent.getSelectedItem().toString();
if(spinner.getId() == R.id.spinnerFrom){
//do this
spinnerFromValue = parent.getSelectedItem().toString();
}
else if(spinner.getId() == R.id.spinnerTo){
//do this
spinnerToValue = parent.getSelectedItem().toString();
}
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
}
有什么想法吗?
答案 0 :(得分:2)
您可以拥有两个全局变量来保存微调器中的选择项。
private String spinnerOneValue;
private String spinnerTwoValue;
如何获取Spinner小部件的选定值
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
Spinner spinner = (Spinner) parent;
if(spinner.getId() == R.id.spinner1){
//do this
spinnerOneValue = spinnerOne.getSelectedItem().toString();
}
else if(spinner.getId() == R.id.spinner2){
//do this
spinnerTwoValue = spinnerTwo.getSelectedItem().toString();
}
}
添加按钮并附加点击事件
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// use the two variables to do what you want.
// Example
mTextView.setText(spinnerOneValue + spinnerTwoValue);
}
});
要把所有东西放在一起,试试这个。如果需要,请记住在布局文件中添加TextView
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class SpinnerActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
private String firstSpinnerValue = "";
private String secondSpinnerValue = "";
private EditText distValue;
private EditText distResult;
private Button buttonConvert;
private String[] arraySpinner;
private TextView disPlaySpinnerValues;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
distValue = (EditText) findViewById(R.id.distValue);
distResult = (EditText) findViewById(R.id.distResult);
disPlaySpinnerValues = (TextView)findViewById(R.id.display);
this.arraySpinner = new String[]{"Miles", "Kilometers", "Meters", "Feet", "Inches", "Centimeters"};
Spinner spinnerFrom = (Spinner) findViewById(R.id.spinnerFrom);
Spinner spinnerTo = (Spinner) findViewById(R.id.spinnerTo);
spinnerFrom.setOnItemSelectedListener(this);
spinnerTo.setOnItemSelectedListener(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, arraySpinner);
spinnerFrom.setAdapter(adapter);
spinnerTo.setAdapter(adapter);
buttonConvert = (Button) findViewById(R.id.buttonConvert);
buttonConvert.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
disPlaySpinnerValues.setText(firstSpinnerValue + secondSpinnerValue);
}
});
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Spinner spinner = (Spinner) parent;
if(spinner.getId() == R.id.spinnerFrom){
//do this
firstSpinnerValue = parent.getSelectedItem().toString();
}
else if(spinner.getId() == R.id.spinnerTo){
//do this
secondSpinnerValue = parent.getSelectedItem().toString();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}