Spinner填充数据后设置默认值的问题

前言

   为Spinner适配完数据后需要设置其默认选项,但是发现直接setSelection(int position)有时候不管用,打开选项又发现已经选中了,但是显示出来的选项又始终默认第一个


正文

  问题很奇怪,此外还发现适配完数据后会默认选中第一个,并且这个默认选中第一个的操作并不是马上执行的,而是一段时候后再执行,并触发OnItemSelectedListener事件。下面直奔主题:

  旧代码:

spinner.setAdapter(adapter);
spinner.setSelection(
2);

  新代码:

spinner.setAdapter(adapter);
spinner.setSelection(
2,true);

  在来看setSelection有两个参数的函数重载的说明:

setSelection(intposition,booleananimate)

  英文:Jump directly to a specific item in the adapter data.

  中文:直接跳到数据适配器中指定项。

  以下是两个函数的源代码:

/**
*Jumpdirectlytoaspecificitemintheadapterdata.
*/
publicvoidsetSelection(intposition,booleananimate){
//Animateonlyifrequestedpositionisalreadyonscreensomewhere
booleanshouldAnimate=animate&&mFirstPosition<=position&&
position
<=mFirstPosition+getChildCount()-1;
setSelectionInt(position,shouldAnimate);
}


@Override
publicvoidsetSelection(intposition){
setNextSelectedPositionInt(position);
requestLayout();
invalidate();
}

结束

  看起来像是专门准备了一个函数在数据适配(填充)完后设置默认值的,可惜API文档还没有翻译到这里,不然少走这个弯路了 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值