需要一个可以手动输入 也可以选择的下拉框,我的思路是这样:用了一个Button,当点击Button后,用代码显示spinner选项,
然后在spinner的onItemSelectedListener中将选中的值赋给EditText。 结果onItemSelectedListener不起作用了,也不报错。主要代码如下:
   //spinner的代码
   sp_usim_list.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long l) {
                                       //这里随便写什么都没反应
et_usim_no.setText("mm"+usimInfoList.get(position).getUsimNo());
} public void onNothingSelected(AdapterView<?> arg0) {
}
});
     //按钮的代码
        b_sys_usim.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sp_usim_list.performClick();//显示Spinner的选项
}
});

解决方案 »

  1.   

    不是很懂你的意思
    spinner有个事件是selectItemListener,你可以通过这个
    public void onItemSelected(AdapterView<?> adapterView, View view,
    int position, long l)
    根据选定的postion得到item的值,我记得有个方法是这样的哈
    string temp=sp_usim_list.getSelectedItem().toString();
    或者是
    string temp=sp_usim_list.getItemAtPosition(position).toString();
    就可以得到选中项的值了,再赋值给EditText就简单了,我就不废话了
    希望可以帮到你
      

  2.   

    我的意思就是现在 OnItemSelectedListener() 不起作用,在onItemSelected里写什么都没反应的,因为Spinner是用performClick()调的,所以OnItemSelectedListener()就不起作用了,不知道为啥,求解决办法
      

  3.   

    我知道你这个问题的错误原因了,你调用的函数不对
    查看api可知:spinner.performClick()方法是调用spinner的onclickListenner事件,而并非是itemSelectedListener,当然就不起作用了boolean android.widget.Spinner.performClick()
    Call this view's OnClickListener, if it is defined.
    Overrides: performClick() in View
    Returns:
    True there was an assigned OnClickListener that was called, false otherwise is returned.
      

  4.   

    呼~解决了哈
    遇到这种情况,你应该打断点跟踪调试哈,缩小范围。
    还有如果可以用简单的方法去实现,为什么要把代码写那么复杂呢。直接调用不就完了么,直到现在也没搞懂你为啥子要用个button,还要弄个onclick出来。
      

  5.   

    其实你一直没理解我的意图,我要做的其实是:一个EditText后面紧跟一个按钮,你可以直接往EditText里输入需要的内容,也可以点击按钮,点击按钮后弹出Spinner框选择选项,选择后将选择的spinner选项填进EditText。Spinner.performClick() 这种方式调用选项框 Spinner.setOnItemSelectedListener好像是不起作用的,我用google搜了下,在两个英文网站上发现有人问同样的问题,不过也没有解决方法。目前我换了种解决方法:
     b_sys_usim.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    final CharSequence[] items = {"1","2","3"};
    builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
         et_usim_no.setText(items[item]);
         dialog.cancel();
        }
    });
    builder.create().show();
    }
    });