2016-06-27 69 views
0

我正在開發一個Android應用程序我已經實現了一個自定義列表視圖與一個標題(ImageView)和一個內容(不同的文本視圖),所有數據的數據是從包含所有文本的json和指向圖像的鏈接。如何像創建一個簡單的「緩存」圖像本地存儲

我必須實現一個功能,下載本地文件夾中的圖像,而不是從互聯網下載它們從本地文件夾中獲取。

我有問題:

1)我要實現我的JSON解析期間在本地存儲下載圖像的功能。如果解析器發現圖像必須下降。

2)解析下載的圖片後必須關聯到本地圖片。

3)當我嘗試顯示所有數據時,必須從本地顯示圖像。

(其實我用凌空加載從互聯網上的圖像)

我怎樣才能做到這一點?我怎樣才能保持beetween圖像和數據

[ 
     { 
     "date":"MY DATE", 
     "desc":"My description", 
     "id":"1", 
     "img":"http:\/\/MYURL\/FOLDER\/homeone.jpg", 
     "text":" My text", 
     "title":"My title" 
     } 
    ] 

*****編輯鏈接1 *****

我有畢加索庫中的問題,我不明白我怎麼能實現緩存。例如,解析我的JSON後,我可以獲取我的JSON項目的URL。

在這種情況下http:\/\/MYURL\/FOLDER\/homeone.jpg現在我必須將圖像保存到本地存儲。

Picasso.with(this) 
      .load(url) 
      .networkPolicy(NetworkPolicy.OFFLINE) 
      .into(imageView); 

這是我在StackOverflow的另一個問題中找到的代碼,這可以幫助我創建緩存?如果是,我如何指定緩存文件夾? 是隻可能將圖像保存在本地存儲?這個緩存是「永久性的」,否則當應用程序重新啓動時,所有的數據都會被刪除?

+0

給唯一的ID爲您的數據和圖像,並保存在SQLite表關係。 或者你可以自己存儲數據,並使用'com.squareup.picasso' [library](https://github.com/square/picasso)通過各自的URL下載和緩存圖像。 – comrade

+0

請看看我的編輯1 – Mattia

回答

0

你正在嘗試才達到在Picasso

嘗試被實施,以避免車輪發明瞭:)

UPD:自動 畢加索緩存圖片,你不需要關心這件事情的。但是,您可以嘗試此示例來手動設置緩存。 這是你如何可以OkHTTP的幫助下定義緩存:

OkHttpClient client = new OkHttpClient(); 
     client.setConnectTimeout(connectTimeOut, TimeUnit.SECONDS); 
     client.setReadTimeout(readTime, TimeUnit.SECONDS); 

     File cachePath = FuncFileDownload.getStoragePath(context, "pre"); 
     client.setCache(new com.squareup.okhttp.Cache(cachePath, 30000000)); 

     sPicasso = new Picasso.Builder(context) 
       .downloader(new OkHttpDownloader(client)) 
       .build(); 
     Picasso.setSingletonInstance(sPicasso); 
+0

令人驚歎的,謝謝 – Mattia

+0

如果它滿足你的請接受答案 –

+0

@alexeypolusov我編輯了我的代碼。 – Mattia