天天看點

[Android]為Spinner填充資料後設定預設值的問題

前言

   為spinner适配完資料後需要設定其預設選項,但是發現直接setselection(int position)有時候不管用,打開選項又發現已經選中了,但是顯示出來的選項又始終預設第一個,本文為文章1的中文簡單譯本。

文章

聲明

  歡迎轉載,但請保留文章原始出處:) 

    部落格園:http://www.cnblogs.com

    農民伯伯: http://www.cnblogs.com/over140/

正文

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

  舊代碼:

        spinner.setadapter(adapter);

        spinner.setselection(2); 

  新代碼:

        spinner.setselection(2,true);

  在來看setselection有兩個參數的函數重載的說明:

setselection(int position, boolean animate)

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

  中文:直接跳到資料擴充卡中指定項。

  以下是兩個函數的源代碼:

[Android]為Spinner填充資料後設定預設值的問題

    /**

     * jump directly to a specific item in the adapter data.

     */

    public void 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

    public void setselection(int position) {

        setnextselectedpositionint(position);

        requestlayout();

        invalidate();

[Android]為Spinner填充資料後設定預設值的問題

結束

  看起來像是專門準備了一個函數在資料适配(填充)完後設定預設值的,可惜api文檔還沒有翻譯到這裡,不然少走這個彎路了 :)

轉載:http://www.cnblogs.com/over140/archive/2010/09/25/1834469.html

繼續閱讀