如何设置onClickListener()来查看Spinner?

时间:2011-08-02 21:15:43

标签: android spinner

我希望捕获用户与像onCLickListener这样的微调器的交互。执行'不要在AdapterView上调用onClickListener()'错误我发现建议您应该使用自定义微调器覆盖构造函数,以在微调器创建的视图上设置onClickListener()。

试过:

public class MySpinner extends Spinner {

public static final String TAG = "MyApp";

public MySpinner(Context context, AttributeSet attrs) {
    super(context, attrs);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, R.array.temp_systems, android.R.layout.simple_spinner_item);
    TextView spinner_text = (TextView) findViewById(android.R.id.text1);
    OnClickListener spinnerOnClickListener = new OnClickListener() {

        public void onClick(View v) {
            Log.d(TAG, "Should do something!");
        }

    };

    spinner_text.setOnClickListener(spinnerOnClickListener);

    setAdapter(adapter);
}

}

但是当我尝试将其包含在布局中时,我会因为没有给这个项目充气而崩溃。

为了澄清这一点,onItemClickListener在用户单击下拉菜单中的项目时触发,而不是在微调器折叠时触发。我需要在点击初始微调器后但在创建下拉菜单之前进行拦截。

3 个答案:

答案 0 :(得分:1)

他们可能意味着Override setOnItemClickListener,然后在构造函数中调用它。所以在你的mySpinner课程中你需要添加:[注意它是在ITEM点击监听器上调用的,这可能也是你问题的一部分]

@Override
    public void setOnItemClickListener(
            android.widget.AdapterView.OnItemClickListener l) {
        super.setOnItemClickListener(l);
//... do action here that you want to happen when item in spinner is clicked
    }

Dunno如果能解决你的问题,我希望它有所帮助。祝你好运。

也可能值得使用

public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
     //do stuff
    }

答案 1 :(得分:1)

不确定为什么需要扩展Spinnner或为什么要在TextView上分配单击侦听器。您应该在微调器上分配一个选择侦听器。根据Spiner示例,考虑:

1)具有Spinner控件的布局

2)拥有活动的“微调”成员

3)通过setContentView对布局进行通知,然后通过findViewById

指定微调成员

4)为微调器设置适配器并在微调器上调用setOnItemSelectedListener以指定选择监听器

答案 2 :(得分:0)

您可以使用OnTouchListener而不是OnClickListener,这对Spinner不可用。