正文
問題很奇怪,此外還發現適配完資料後會預設選中第一個,並且這個預設選中第一個的操作並不是馬上執行的,而是一段時候後再執行,並觸發OnItemSelectedListener事件。下面直奔主題:

 

舊代碼:
spinner.setAdapter(adapter);
spinner.setSelection(2);
新代碼:
spinner.setAdapter(adapter);
spinner.setSelection(2,true);
在來看setSelection有兩個參數的函數重載的說明:

 

setSelection(int position, boolean animate)
英文:Jump directly to a specific item in the adapter data.

 

中文:直接跳到資料配接器中指定項。




以下是兩個函數的原始程式碼:

 

/**
* Jump directly to a specific item in the adapter data.
*/
publicvoid setSelection(int position, boolean animate) {
Animate only if requested position is already on screen somewhere
boolean shouldAnimate = animate && mFirstPosition <= position &&
position <= mFirstPosition + getChildCount() -1;
setSelectionInt(position, shouldAnimate);
}



@Override
publicvoid setSelection(int position) {
setNextSelectedPositionInt(position);
requestLayout();
invalidate();
}
 

 

看起來像是專門準備了一個函數在資料適配(填充)完後設置預設值的,可惜API文檔還沒有翻譯到這裡,不然少走這個彎路了 :)
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()