Android Spinner选择同一个选项时触发onItemSelected事件

今天有个同事在使用spinner控件时,再次选择同一个选项时没有触发onItemSelected事件。因为项目需求的原因,非常需要。所以我们一起看了看源码找出了“再次选择同一选项时为什么不触发事件”。我们可以带着这样的几个疑惑来分析问题,首先什么时候会触发onItemSelected事件?必须具备什么条件才能够有资格触发onItemSelected事件呢?带着这样的疑问我首选会想到setOnItemSelectedListener监听事件,进入源码中找到setOnItemSelectedListener方法。

/**
* Register a callback to be invoked when an item in this AdapterView has
* been selected.
*
* @param listener The callback that will run
*/
public void setOnItemSelectedListener(OnItemSelectedListener listener) {
mOnItemSelectedListener = listener;
}

然后mOnItemSelectedListener 这个监听对象在哪儿调用onItemSelected方法呢,也就触发了onItemSelected事件。
那么好,我们可以直接找到哪儿调用了。源码如下:

private void fireOnSelected() {
if (mOnItemSelectedListener == null) {
return;
}
final int selection = getSelectedItemPosition();
if (selection >= 0) {
View v =

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值