2011-04-17 44 views
2

我創建了一個具有自定義SimpleCursorAdapter的列表視圖。我想要在列表中的第一個元素中放置一個標題。一次可以在屏幕上顯示8個視圖。當我向下滾動到第九個視圖時,第一個元素的標題出現。至少我相信那是發生了什麼。我刪除了列表視圖上方的一個按鈕,允許所有元素出現在屏幕上,只有第一個元素具有標題。Android - 自動回收listview元素?

我相信我每次都會迫使新的觀點被誇大。我已經閱讀了一下convertview,它似乎是你必須手動實現的東西。

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 

    final LayoutInflater inflater = LayoutInflater.from(context); 
    int position = cursor.getPosition(); 
    View v; 
    v = inflater.inflate(R.layout.roster_lv_row_entry_with_header, parent, false);  
    if(position > 0) 
     v = inflater.inflate(R.layout.roster_lv_row_entry_no_header, parent, false); 

    return v; 

回答

4

你建議立即進行刪除,如果必要覆蓋(final int position, View convertView, ViewGroup parent)方法在你的適配器類,並

  1. 分配convertView參數 新值(,不過還好只是使用它,如果它是正確的類型,並使用基於yourListData.get(position)的適當數據填充它,其中yourListData是例如List<?>擴展名。)
  2. 然後返回它。
+0

而這似乎解決了這個問題!謝謝。 – 2011-04-17 07:08:37

+0

我遇到問題。我的應用在後臺加載圖像的位置..我在視圖中顯示了三個項目,當我點擊其中一個項目時。他們重漆...我遇到的問題是。該列表視圖正在重用仍在屏幕上的項目。或者看起來如此。 – 2011-04-20 20:49:08

+1

爲了避免這種情況,您應該始終爲convertView參數指定一個新值,因爲它在1.步驟中。這樣它不會緩存和滾動不會導致這種副作用。 – rekaszeru 2011-04-20 20:55:00