2014-10-03 83 views
0

通過使用適配器執行一些簡單任務,我遇到了麻煩。 我有一個類實現BaseAdapter,關聯到一個ListView。 當我創建這個適配器並向用戶展示它之後,如果發生某些事件,我將刪除適配器內的所有元素,並添加新的適配器。刪除自定義BaseAdapter中的所有項並添加新項

我實現我BaseAdapter裏面這個方法:

public void clearAndBuild(ArrayList<PictureObject> new_pics, String some_text) { 
    pics.clear(); 
    pics.addAll(new_pics); 
    this.hashtag = hashtag; 

    //do something else 
} 

(其中圖片是包含物品放在裏面的ListView一個ArrayList)。在我的活動中,我刷新所有電話:

adapter.clearAndBuild(pics, tag); 
adapter.notifyDataSetChanged(); 

但它不起作用。 我調用該方法後,listView中的舊項目被刪除,但新的沒有顯示(我得到一個空的列表視圖)。 有什麼問題?

+0

在您的通話clearAndBuild,你傳遞的ArrayList的是你清除同一個?無法從代碼的上下文中看出來。如果是這樣,您可能會清除新的ArrayList,然後嘗試將其分配給自己。 – NightwareSystems 2014-10-03 14:24:36

+0

請發佈您的適配器,並在其中獲得它的實例! – mmlooloo 2014-10-03 14:43:51

回答

0

唯一的原因可能是您正在重複使用相同的參考文件picsnew_pics。調用清除()上pics

0

你可以做到這一點之前,確保new_pics深層副本:

public void clearAndBuild(ArrayList<PictureObject> new_pics, String some_text) { 
    pics. = new ArrayList<PictureObject>(new_pics); 
    this.hashtag = hashtag; 

    //do something else 
} 
相關問題