2011-05-28 82 views
1

我必须创建一个不在我的布局中的微调器。以编程方式创建微调器

所以我想创建它编程我写了下面的代码在我的活动类

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"); 
    } 
}); 

所以我的问题是如何访问微调所选的项目,活动

回答

1

在你onItemSelected

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

position帮助您找回您选择的项目。其中,在你的情况下,它应该是:

option[position] 
+0

感谢答复,但onItemSelected函数不叫,所以我如何检索值,而不调用它,它为什么不叫 – 2011-05-28 00:41:45

+0

呀只要把你的支持数组中的活动,并使用当前位置找出哪个东西被选中。 – 2011-05-28 00:44:34

+0

我的数组已经在活动中了,我看到spinner的视图非常好,但是当我选择任何项目的时候没有任何反应 – 2011-05-28 00:46:59

1

你访问它侦听器之外唯一的办法就是做一个变量,保持姿势,所以你以后会使用它。 事情是这样的:

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, View v,int position, 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"); 
     } 
    }); 
} 
+0

嘿,我认为你不太明白,我的问题是执行没有达到onItemSelected块 – 2011-05-28 00:58:19

+0

哦,抱歉。 您是否尝试调试它,并在“onItemSelected”方法的开头放置一个断点? – Elad92 2011-05-28 01:09:00

+0

是的,但没有执行此方法 – 2011-05-28 01:13:21