2012-05-28 81 views
0

我有一個名爲PlayerList類,在該類我有這樣定義一個ArrayList:如何從ArrayList中刪除位圖?

private ArrayList<Bitmap> images = new ArrayList<Bitmap>(); 

現在,一個ArrayList remove方法可以exept 2個參數,索引和一個對象。

我想通過發送位圖來從數組中刪除一個位圖。事情是位圖是由相同的圖像,但我保存在數組中的位圖不一樣我試圖找到,當我打印ArrayList控制檯我一直看到新的名字,東西如:

[[email protected], [email protected]] 

這可能是相關的嗎?儘管如此,該課程實現Parcelable,所以數據被讀寫,不能太健康,對吧?

我是否缺少一個通用的問題或它的代碼特定,我應該發佈我的代碼?

我這裏basiclly問題是,當我嘗試刪除該位圖,它永諾刪除了錯誤的項目在ArrayList中,始終爲1 1,我需要

+0

如果實例不同,除非您創建檢查image * content *的equals/hash方法,否則您運氣不好。你可以使用不同的機制,比如給他們一個ID或者通過名字引用他們等等。 –

+0

如果我將使用Drawable?那會工作嗎? –

+0

這不是關於你的'Bitmap'類實現的接口。 'remove'方法使用'Bitmap'對象的'equals'方法來查找並從列表中移除它。所以,除非你在'Bitmap'類中正確實現'equals'方法,否則你不能指望'ArrayList.remove'方法去除正確的對象。 –

回答

0

之前,除非你有一個句柄BitMap's哈希碼或就像它存儲的密鑰一樣,你不能從列表中刪除所需的密鑰。如果您只想依賴存儲的BitMap,則需要遍歷列表並解析元素以查找所需的位圖。再次,您需要一個hascode來識別您正在解析的BitMap是您正在查找的內容。這意味着您需要爲存儲的每個BitMap保留一個hashcode's的列表。或者,使用HashMap而不是List,允許存儲key而不存儲BitMap。您可以根據key來處理您的需求,並根據需要使用它來從HashMap表中刪除BitMap

HashMap<String, BitMap> myBitMaps = ... // construct as you desire. 
... 
if (condition satisfied on key) { 
    myBitMaps.remove(keyObject); 
    // process further 
}