2011-08-18 59 views
0

背景: 我使用baseadapter爲圖像填充gridview。 Imageview的資源使用AsyncTask進行下載。我從onPostExecute方法成功失敗回調。我在適配器的getView方法中使用此回調。如何使用baseadapter從gridview中刪除一個項目而不刷新所有項目

問題 如果imageview的url返回404錯誤,gridview由於404錯誤而有一些空的空格。我可以刪除這些項目並調用notifydatasetchanged,但是這次它從頭開始刷新所有的gridview。雖然我在某處存在錯誤的項目,但刪除它們並調用notifydatasetchanged一次,似乎gridview在應用程序中填充了兩次。

問題 我想加載gridview的圖像,而無需任何間隙。例如,如果有9圖像和第四和第六圖像返回404錯誤,那麼我想在gridview中看到只有七個項目

我希望我的問題很清楚。謝謝你的幫助。

回答

0

我解決了我這樣的問題。當我趕從404錯誤回調,在baseadapter getview方法,

DownloadCallback dc = new DownloadCallback(){ 

     public void onSuccess(String downloadedString){ 

     } 

     public void onFailure(int callbackID){ 
      System.out.println("onFailure - " + callbackID); 

      if(callbackID < getCount()) // in case of out of index exception 
      rows.remove(callbackID); 
      //parent.removeViewAt(callbackID); we cannot remove it is UNSUPPORTED 
      reloadFromPosition(callbackID, imageView, parent); 
     } 
    }; 

和reloadFromPosition方法就是這樣;

private void reloadFromPosition(int position, View convertView, ViewGroup parent) 
{ 
    if(position < getCount()) 
    { 
     System.out.println("reloadFrom - if - " + position); 
     getView(position, convertView, parent); 
     reloadFromPosition(position + 1, parent.getChildAt(position +1), parent); 
    } 

} 
相關問題