【发布时间】:2019-10-24 16:44:42
【问题描述】:
选择同一个位置时有没有办法执行?
例如,如果当前选择了 0,再次选择 0 将导致相同的事件再次发生。
【问题讨论】:
选择同一个位置时有没有办法执行?
例如,如果当前选择了 0,再次选择 0 将导致相同的事件再次发生。
【问题讨论】:
创建一个扩展 Spinner 的自定义类并将其替换为您的 Spinner
public class NDSpinner extends Spinner {
public NDSpinner(Context context) {
super(context);
}
public NDSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NDSpinner(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) {
// Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
}
@Override
public void
setSelection(int position) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
}
}
【讨论】:
Spinner 替换为 NDSpinner。