I have a OnItemSelectedListener for my Spinner, but it is not called when the selected item is the same as the previous one. Apparently the O
Here is a better implementation -
Custom Spinner Class -
import android.content.Context;
import android.util.AttributeSet;
import androidx.appcompat.widget.AppCompatSpinner;
public class CSpinner extends AppCompatSpinner {
private int lastPosition = 0;
public CSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setSelection(int position) {
super.setSelection(position);
boolean sameSelected = lastPosition == getSelectedItemPosition();
OnItemSelectedListener onItemSelectedListener = getOnItemSelectedListener();
if (sameSelected && onItemSelectedListener != null) {
onItemSelectedListener.onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
lastPosition = position;
}
}
Setting Listener -
spn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view, int position, long id) {
Log.d("onItemSelected", String.valueOf(position));
}
@Override
public void onNothingSelected(AdapterView> parent) {
}
});