原因:
1.下拉清單Sipnner點選相同Item不會響應(也就是spinner的OnItemSelectedListener隻在第一次點選調用,其餘重複點選不再響應)是因為Spinner的父類AbsSpinner的源代碼為:
voidsetSelectionInt(int position, boolean animate) {
if (position != mOldSelectedPosition) {
mBlockLayoutRequests = true;
int delta = position -mSelectedPosition;
setNextSelectedPositionInt(position);
layout(delta, animate);
mBlockLayoutRequests = false;
}
}
解決辦法:自定義一個Spinner控件,代碼如下:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Spinner;
public class MySpinner extends Spinner {
public MySpinner(Context context) {
super(context);
}
public MySpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MySpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setSelection(int position, boolean animate) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position, animate);
if (sameSelected) {
getOnItemSelectedListener().onItemSelected(this, getSelectedView(),
position, getSelectedItemId());
}
}
@Override
public void setSelection(int position) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position);
if (sameSelected) {
getOnItemSelectedListener().onItemSelected(this, getSelectedView(),
position, getSelectedItemId());
}
}
}
在自己代碼裡面使用MySpinner控件就可以了