setOnItemClickListener不适用于Spinner.这是我的代码......
supplier.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
String msupplier=supplier.getSelectedItem().toString();
Log.e("Selected item : ",msupplier);
}
});
Run Code Online (Sandbox Code Playgroud)
Ebi*_*ian 48
setOnItemClickListener不适用于微调器.尝试使用此方法:
setOnItemSelectedListener
更改您的代码如下:
supplier.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
String msupplier=supplier.getSelectedItem().toString();
Log.e("Selected item : ",msupplier);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)
OnItemSelectedListener()与点击侦听器的用途不同。最重要的是,如果您再次单击当前选定的项目,它不会触发。在某些情况下,这可能不是问题,但在其他情况下,这很可能是问题。所以真正的答案不是告诉人们使用不同的、可能不合适的听众,而是解决最初的问题。:-)
幸运的是,我们可以将点击监听器放在适配器上:
public class SpinnerClickAdapter extends BaseAdapter implements SpinnerAdapter {
protected OnItemClickListener listener;
public SpinnerClickAdapter(Context context, ..., OnItemClickListener listener) {
super();
this.listener = listener;
}
@Override
public View getDropDownView(final int position, View convertView, final ViewGroup parent) {
if (convertView == null)
convertView = LayoutInflater.from(context).inflate(R.layout.yourlayout, false);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null)
listener.onItemClick((AdapterView<?>) parent, v, position, getItemId(position));
}
});
// ...
return convertView;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以像往常一样使用它,唯一的区别是不在微调器上而是在适配器上设置它:
Spinner spinner = (Spinner) findViewById(R.id.yourspinner);
SpinnerClickAdapter spinnerAdapter = new SpinnerClickAdapter(context, ..., new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO
}
});
spinner.setAdapter(spinnerAdapter);
Run Code Online (Sandbox Code Playgroud)
小智 5
1.我认为你应该检查包含微调器的xml文件.确保没有设置android:clickable = "false".
2.请检查您的微调适配器,并确保在你的getView(int position, View convertView, ViewGroup parent)方法,你没有设置任何插件点击回调事件,例如Button,Imageview,TextView
| 归档时间: |
|
| 查看次数: |
29432 次 |
| 最近记录: |