OnItemSelectedListener()
dient einem anderen Zweck als einen Klick Hörer. Am wichtigsten ist, dass es nicht ausgelöst wird, wenn Sie erneut auf das aktuell ausgewählte Element klicken. In einigen Fällen ist dies möglicherweise kein Problem, in anderen Fällen jedoch sehr wohl. Die wirkliche Antwort besteht also nicht darin, den Leuten zu sagen, sie sollten einen anderen und wahrscheinlich ungeeigneten Hörer benutzen, sondern das ursprüngliche Problem lösen.
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;
}
}
und dann können wir es wie gewohnt, mit dem einzigen Unterschied, der nicht auf dem Spinner Einstellung, sondern auf das: Statt :-)
Zum Glück können wir den Klick-Listener auf dem Adapter platzieren Adapter stattdessen:
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);
Können Sie mehr Code für diese Aktivität bereitstellen? –
Bitte fügen Sie Ihren Adapter-Code und die Xml Ihrer Spinner-Artikel –