2013-12-09 74 views
0

我正在創建一個自定義適配器,並使用getView方法試圖僅顯示默認文本ONCE。現在我遇到了一個問題,當我單擊列表中的第一個項目時,默認文本將保留,但不適用於其他任何項目?有什麼建議麼?Android Spinner getView

謝謝! (我的代碼是有點亂,因爲我只是想調試)

boolean firstTime = true; 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    if (firstTime) { 
     firstTime = false; 
     TextView firstView = new TextView(ForgotPasswordActivity.this); 
     firstView.setText("Please select School"); 
     return firstView; 
    } 
    TextView view = new TextView(ForgotPasswordActivity.this); 
    view.setText("Hello"); 
    return view; 
} 
+1

你是什麼_「默認文本將保留,但並不適用於任何其他項目」 _你的問題是混亂的意思..請解釋清楚 –

回答

0

我不完全相信你的努力做,但你可能會迫使頂行始終顯示選擇消息通過檢查位置是0.另請注意,在下面的代碼中,如果convertView不爲null,我將重用它。如果可用,重用convertView會比每次重新創建新視圖更快。

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if(convertView == null) { 
      convertView = new TextView(ForgotPasswordActivity.this); 
     } 

     if(position == 0) { 
      convertView.setText("Please select School"); 
     } else { 
      convertView.setText("Hello"); 
     } 

     return convertView; 

    } 

還記得,迫使零位置來顯示選擇消息你是不是顯示適配器的實際數據爲0的位置確保這是你想要做或插入一個虛擬數據塊在哪後備數據數組的第一個位置。

1

必須與getCount將功能發揮:

@Override 
public int getCount() { 
    return super.getCount() -1; // This makes the trick; 
} 

這一招不會顯示你的微調(內加最後一個項目,所以當你完成添加的離心器內的文字,添加文字:將不會顯示在微調器中,並且在點擊微調器之前它將顯示爲默認值)。

好運