package de.bsd.zwitscher;
import android.content.Context;
import android.content.DialogInterface;
import android.util.AttributeSet;
import android.widget.Spinner;
/**
* A spinner, that does not have the flaw that for programmatic invocations it will directly
* call the onSelectedListener. Instead it defines a onClick listener that is then called when
* the user selects an item. This even works when the user re-selects that item again.
*
* Copied from http://stackoverflow.com/a/8714434/100957
*
*/
public class WorkingSpinner extends Spinner {
private OnItemClickListener onItemClickListener;
public WorkingSpinner(Context context) {
super(context);
}
public WorkingSpinner(Context context, int mode) {
super(context, mode);
}
public WorkingSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
public WorkingSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public WorkingSpinner(Context context, AttributeSet attrs, int defStyle, int mode) {
super(context, attrs, defStyle, mode);
}
@Override
public void setOnItemClickListener(OnItemClickListener l) {
// DO NOT call super.setOn... this will bomb
this.onItemClickListener = l;
}
@Override
public void onClick(DialogInterface dialog, int which) {
super.onClick(dialog, which);
if (this.onItemClickListener != null) {
this.onItemClickListener.onItemClick(this, this.getSelectedView(), which, this.getSelectedItemId());
}
}
}