我希望捕获用户与像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在用户单击下拉菜单中的项目时触发,而不是在微调器折叠时触发。我需要在点击初始微调器后但在创建下拉菜单之前进行拦截。
答案 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不可用。