PicassoでMediaStoreを通してローカルの画像を読み込むとサムネがおかしい
昨日のつらぽよを書き出しておきます。
コンテンツプロバイダでローカルの画像を取得してPicasso使ってギャラリーみたいなことやりたいなぁ、と思っていたら、なんとこのギャラリー、タップするたびに同じ位置に入る画像が変わるので困りました。
最初は、
Picasso — Influencing Image Caching
を見てネットワークやメモリのキャッシュを使わないように設定したり、
あるいは RecyclerView の各種要素に挿入するために矢継ぎ早に画像取得のリクエストを送っているもので、どこかで取得に失敗したときに違う要素の画像データを受け取っているといった感じの
あたりを参考に、 RecyclerView の onBindViewHolder で画像を load() メソッドで読み込む前に cancelRequest を呼んでみたりしてました。
はたまたテストのしすぎで端末のデータがおかしいのかな、ということで、
あたりを見て、端末のキャッシュをクリアしてみたり。
けれど、いずれも効果はなく、Picassoのissue見てたら下記のissueの件のようでした。
既知の問題ではあるようなのですが、去年の五月~六月から進捗ないみたい!
とりあえず勢いに任せてforkしてみたのですが、まいったなぁ、ということで、
の記事を参考に Glide と Universal Image Loader を試してみて、ほとんどデフォルトの簡単な設定だと Universal Image Loader はスクロールするだけで同じ箇所の画像がぽろぽろ入れ替わる形で不安があった一方で Glide が特に考えなくても使えたため、 MediaStore だけ Glide を使ってしのぎました。
Glide も fromMediaStore() メソッドを呼び出さないと一部画像が呼び出されなくて相当焦ったのであしからず...。