以编程方式创建Spinner

问题描述

| 我必须创建一个不在布局中的微调框。 所以我要创建它,以编程方式在“我的活动”类中编写以下代码
Spinner spinner = new Spinner(this);
String option[]={\"By Date\",\"By Transaction ID\",\"By Customer Phone\"};
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,option);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item );
spinner.setAdapter(spinnerArrayAdapter);
spinner.performClick();
spinner.setonItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parentview,View v,int position,long id)
    {
        Log.d(\"in select\",\"yes\");
    }

    @Override
    public void onnothingSelected(AdapterView<?> arg0) 
    {
        Toast.makeText(MainMenu.this,\"no\",Toast.LENGTH_LONG).show();
        Log.d(\"In No select\",\"No\");
    }
});
所以我的问题是我如何访问活动中的微调器选择的项目     

解决方法

        在您的
onItemSelected
中:
@Override
public void onItemSelected(AdapterView<?> parentview,View v,int position,long id)
{
    Log.d(\"in select\",\"yes\");
}
position
可帮助您检索所选的项目。在您的情况下,应为:
option[position]
    ,        在侦听器之外访问它的唯一方法是创建一个将保留位置的变量,因此稍后将使用它。 像这样:
public class YourActivity extends Activity {
    private int curPos;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    Spinner spinner = new Spinner(this);
    String option[]={\"By Date\",\"By Transaction ID\",\"By Customer Phone\"};
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,option);
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item );
    spinner.setAdapter(spinnerArrayAdapter);
    spinner.performClick();
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parentview,long id)
        {
            curPos = position;
            Log.d(\"in select\",\"yes\");
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) 
        {
            Toast.makeText(MainMenu.this,\"no\",Toast.LENGTH_LONG).show();
            Log.d(\"In No select\",\"No\");
        }
    });
}