AndroidでRSSの画像を抽出する方法について

RSSリーダーに画像を取得する機能が必要になったので、調査しました。

今やろうとしていることは、以下。

  1. RSSフィードからXMLを取得
  2. XML中のdescriptionタグの中から、imgタグのものを抽出
  3. 抽出した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