2011-10-12 23 views
3

我有一個sqlite數據庫,有2000多個低分辨率的 圖片縮略圖。數據庫本身的大小超過100MB。該項目 要求我有照片駐留在數據庫而不是 文件路徑。populate galleryview與來自sqlite數據庫的圖像動態

這是我想要做的,需要幫助,因爲這是我第一次處理圖像 。我在我的App UI中有一個水平的GalleryView ,我想用這個 數據庫動態地填充圖像。我不介意這些圖像是否在 上延遲加載到後臺的圖庫視圖中。我在某處讀到,我將 必須使用ImageAdapter動態地將圖像綁定到UI元素 。我需要理解這是如何完成的。我從來沒有使用過BaseAdapter類的 。

感謝, AB

回答

1

你確實將繼承一個適配器來拉這些圖片,你的數據庫中把它們變成位圖或可繪然後設置您的圖片到的ImageView並將其添加到您的畫廊。

我建議您在開始之前先切換使用畫廊。 Gallery有一個錯誤,它不允許你的適配器正確地回收視圖。這意味着每次新圖像進入屏幕時,用戶都在滾動圖庫,以創建新的ImageView對象。這是浪費,並會導致顯着的性能下降,而你的畫廊正在滾動,由於垃圾收集不斷運行。

要開始使用適配器,請檢查SimpleCursorAdapter並在線搜索如何擴展SimpleCursorAdapter的示例。在你的getView方法中,你將把你的圖像從數據庫中提取出來,並將其設置爲一個視圖以顯示給用戶。

+0

感謝您的快速更新蒂姆。但是,如果我將GalleryView保留在UI中,並且只有在加載了所有來自db的圖片後才允許用戶訪問它,那麼我該如何去做呢?不幸的是,我沒有選擇擺脫我的圖像的水平畫廊類型的視圖。 –

+0

換句話說,您認爲將2000多張圖片加載到圖庫需要花費大量時間嗎? –

+0

它不會一次加載全部2000+。它會加載它所需要的只是填滿屏幕。然後當用戶滾動得足夠遠以至於新的顯示器會加載新的。所以它不會預先加載屏幕上的所有內容。 – FoamyGuy

0

我能夠使用自定義適配器和字符串數組來保存SD卡上圖像的位置。在做所有這些之前,我必須從數據庫中提取圖像並將它們複製到SD卡位置。我正在努力避免這一步,因爲它會將這些圖像複製5到7秒。