OnItemSelectedListener()
służy innemu celowi niż jednym kliknięciem słuchacz. Co najważniejsze, nie uruchamia się, jeśli ponownie klikniesz na aktualnie wybrany element. W niektórych przypadkach może to nie stanowić problemu, ale w innych przypadkach może tak być. Tak więc prawdziwą odpowiedzią nie jest mówienie ludziom, aby używali innego i prawdopodobnie nieodpowiedniego słuchacza, ale aby rozwiązać pierwotny problem. :-)
szczęście możemy umieścić kliknij słuchacza na adapterze zamiast:
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;
}
}
i wtedy możemy używać go jak zwykle, z tą tylko różnicą, nie ustawiając go na turbinki ale na zamiast tego adapter:
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);
Czy możesz podać więcej kodu tej aktywności? –
proszę dodać kod adaptera i xml przedmiotu do przedmiotu na pytanie: –