Android 如何为微调器视图设置onClickListener()?
我想捕捉用户与类似onCLickListener的微调器的交互。针对“AdapterView上不调用onClickListener()错误”,我发现了一些建议,建议您使用自定义微调器重写构造函数,以便在微调器创建的视图上设置onClickListener() 尝试:Android 如何为微调器视图设置onClickListener()?,android,spinner,Android,Spinner,我想捕捉用户与类似onCLickListener的微调器的交互。针对“AdapterView上不调用onClickListener()错误”,我发现了一些建议,建议您使用自定义微调器重写构造函数,以便在微调器创建的视图上设置onClickListener() 尝试: public class MySpinner extends Spinner { public static final String TAG = "MyApp"; public MySpinner(Context contex
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);
}
}
公共类MySpinner扩展微调器{
公共静态最终字符串TAG=“MyApp”;
公共MySpinner(上下文、属性集属性){
超级(上下文,attrs);
ArrayAdapter=ArrayAdapter.createFromResource(上下文,R.array.temp_系统,android.R.layout.simple_微调器_项);
TextView微调器_text=(TextView)findViewById(android.R.id.text1);
OnClickListener spinnerOnClickListener=新的OnClickListener(){
公共void onClick(视图v){
Log.d(标记“应该做点什么!”);
}
};
spinner_text.setOnClickListener(spinnerOnClickListener);
设置适配器(适配器);
}
}
但当我试图将其包含在布局中时,我会因为未能充气而崩溃
这里要澄清的是,当用户单击下拉菜单中的项目时,而不是当微调器折叠时,onItemClickListener将激发。我需要在单击初始微调器之后但在它创建下拉菜单之前进行拦截。它们的意思可能是
覆盖setOnItemClickListener
,然后在构造函数中调用它。因此,在您的mySpinner
类中,您需要添加:[注意,它是在ITEM click listener上调用的,这可能也是您的问题的一部分]
@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
}
不知道这是否会解决你的问题,但我希望它会有所帮助。祝你好运
而且可能值得使用
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
//do stuff
}
public void已选择(AdapterView父级、,
视图,内部位置,长id){
//做事
}
不确定为什么需要扩展Spinnner,或者为什么要在TextView上分配一个单击侦听器。您应该在微调器上指定一个选择侦听器。根据Spiner示例,考虑:
1) 具有带有微调器控件的布局
2) 在你的活动中有一个“微调器”成员
3) 通过setContentView
对布局进行充气,然后通过findViewById
4) 设置微调器的适配器,并在微调器上调用setOnItemSelectedListener
以分配选择侦听器您可以使用OnTouchListener而不是OnClickListener,OnClickListener对微调器不可用。您能显示它给出的错误/崩溃日志吗?我认为您应该看看微调器示例。另外,请发布更多关于布局以及如何设置视图/充气的信息。