简单 Android 两个微调器并提交示例

Simple Android two spinner and submit example

Android 开发非常新。

我一直在引用这个 Whosebug 线程:Android: two Spinner onItemSelected(),但到目前为止 运行 在尝试构建一个带有两个微调器和一个提交按钮的简单程序时遇到了问题。我正在尝试开发的简单程序捕获在 Spinners 和提交时选择的任何内容,确实 'something'。

如果我使用下面的 onItemSelectedListener,我该如何实现一个 onClick 监听器来捕获当前在两个微调器中选择的任何内容?是否将相同的 'View' 传递给 '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
    }

}

有什么想法吗?

您可以有两个全局变量来保存微调器中的 select 个项目。

private String spinnerOneValue;
private String spinnerTwoValue;

如何获取 Spinner 小部件的 selected 值

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

 }
}