Я решил, что оставлю обновленный ответ для тех, кто работает над более новыми версиями Android.
Я собрал вместе функцию из приведенных выше ответов, которая будет работать как минимум для 4.1.2 и 4.3 (устройства, которые япроверено на).Эта функция не использует отражение, но вместо этого отслеживает последний выбранный индекс, поэтому ее можно безопасно использовать, даже если SDK меняет то, как классы расширяют друг друга.
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Spinner;
public class SelectAgainSpinner extends Spinner {
private int lastSelected = 0;
public SelectAgainSpinner(Context context)
{ super(context); }
public SelectAgainSpinner(Context context, AttributeSet attrs)
{ super(context, attrs); }
public SelectAgainSpinner(Context context, AttributeSet attrs, int defStyle)
{ super(context, attrs, defStyle); }
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if(this.lastSelected == this.getSelectedItemPosition() && getOnItemSelectedListener() != null)
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), this.getSelectedItemPosition(), getSelectedItemId());
if(!changed)
lastSelected = this.getSelectedItemPosition();
super.onLayout(changed, l, t, r, b);
}
}