2010-03-19 29 views
2

我正在處理自動增長列表視圖。每次我打電話之前在ListView和BaseAdapter中設置可見性的問題

mAdapter.notifyDataSetChanged(); 

我使用進度圈切換列表上的最新項目。

/** 
    * displays a progress banner instead of the last item. 
    * @param reload boolean 
    */ 
    protected void showReloadView(boolean reload){ 
     View item = mListView.getChildAt(onLastItem); 
     //View item = mListView.getAdapter().getView(onLastItem, null, null); 
     content = item.findViewById(id.itemContent); 
     loading = item.findViewById(id.itemLoading); 
     if(reload){ 
      content.setVisibility(View.GONE); 
      loading.setVisibility(View.VISIBLE); 
     }else{ 
      content.setVisibility(View.VISIBLE); 
      loading.setVisibility(View.GONE); 
    } 

我的問題在於,我回收我在SDK中提到的視圖作爲EfficientAdapter。 因此,我的ListView對象目前持有不超過8個項目(因沒有更明顯)

第一次運行是確定的,因爲「onLastItem」是7(可見的項目 - 1),但第二次運行

ListView.getChildCount() 

只返回6個項目。那麼,爲什麼我的ListView變小?由於Visibility.GONE? 我做錯了嗎?

我試過使用uncommented行。我的適配器知道列表的實際大小,我甚至可以看到視圖。但設置這些視圖的可見性不會產生任何影響。

提前

回答

0

看完google IO 09 video後我解決了這個問題。

由於列表視圖包含不超過可見光的看法,我只是改變了我的代碼:

View item = mListView.getChildAt(mListView.getChildCount()-1); 

保存看法的領域和更新的數據集,我可以切換回佈局之後。 經過測試,工作完美。

謝謝你的時間。

0

那麼,爲什麼我的ListView越來越小了THX? 由於Visibility.GONE?

這是我的猜測,但你必須看看ListView的執行情況以確定。我採取了與我的EndlessAdapter相反的方法 - 我將ListView單獨留下,並使用裝飾適配器處理獲取更多數據。