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;
}
}
,然后我们可以使用它像往常一样,不把它放在了微调,但是,唯一的区别适配器改为:
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);
你能提供一些更多的活动代码吗? – 2013-02-25 10:11:49
请将您的适配器代码和您的微调项目的XML添加到问题 – 2013-02-25 10:12:05