RSSリーダーに画像を取得する機能が必要になったので、調査しました。
今やろうとしていることは、以下。
- RSSフィードからXMLを取得
- XML中のdescriptionタグの中から、imgタグのものを抽出
- 抽出したURLをImageViewで表示
1.RSSフィードからXMLを取得
ここは結構やっているサイトがあるので割愛。(自分はITpro:第4回 簡単なRSSリーダーを作ってみる を参考に作ってみましたを参考にしました)
2.XML中のdescriptionタグの中から、imgタグのものを抽出
以下のようなソースでトリミング
private static String StripImageTags(String str) { String tmpString = ""; Pattern p = Pattern.compile(" Matcher m = p.matcher(str); if (m.find()) { tmpString = m.group(2); } return tmpString; }
3.抽出したURLをImageViewで表示
ここが一番手こずった。。
String image = item.getImage().toString(); image = StripImageTags(image); Uri image_url = Uri.parse(image); Image = (ImageView)view.findViewById(R.id.item_image); Image.setImageURI(image_url);
でいけると思ったのだが、表示されない。
結構いろいろ調べてみたが、どうやらImageViewnにはBitmapやRowデータを渡さないといけないことが判明(URLじゃだめなのか・・)
ということで以下のように変更したらいけました。
String image = item.getImage().toString(); image = StripImageTags(image); Image = (ImageView)view.findViewById(R.id.item_image); try { URL image_url = new URL(image); InputStream is = (InputStream) image_url.getContent(); Drawable drawable = Drawable.createFromStream(is,""); is.close(); mImage.setImageDrawable(drawable); } catch (IOException e) { e.printStackTrace(); }
これで表示されました。パース部分を修正すれば色々なところで使えそう。
http://noxi515.blogspot.com/2011/02/imageviewsetimageuri.html