从rss feed获取图像

时间:2014-01-25 19:07:09

标签: android image rss

我正在尝试使用Android Studio显示rss Feed的图像,但我不知道如何执行此操作。我可以得到所有其他项目,但我不知道为什么我不能得到图像。你能帮我吗? 这是我的Handler

public class RSSHandler extends DefaultHandler {

final int state_unknown = 0;
final int state_title = 1;
final int state_description = 2;
final int state_link = 3;
final int state_pubdate = 4;
final int state_enclosure = 5;
final int state_url = 6;
int currentState = state_unknown;

RSSFeed feed;
RSSItem item;

boolean itemFound = false;

RSSHandler(){
}

RSSFeed getFeed(){
    return feed;
}

@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
    feed = new RSSFeed();
    item = new RSSItem();

}

@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
}

@Override
public void startElement(String uri, String localName, String qName,
                         Attributes attributes) throws SAXException {
// TODO Auto-generated method stub

    if (localName.equalsIgnoreCase("item")){
        itemFound = true;
        item = new RSSItem();
        currentState = state_unknown;
    }
    else if (localName.equalsIgnoreCase("url")){
        currentState = state_url;
    }
    //{
      //  if (!attributes.getValue("url").equalsIgnoreCase("null")) {
         //   feed.setImage(attributes.getValue("url"));
        //} else {
       //    feed.setImage("");
        //}
      //  currentState = state_image;
    //}
    else if (localName.equalsIgnoreCase("enclosure")){
        currentState = state_enclosure;
    }
    else if (localName.equalsIgnoreCase("title")){
        currentState = state_title;
    }
    else if (localName.equalsIgnoreCase("description")){
        currentState = state_description;
    }
    else if (localName.equalsIgnoreCase("link")){
        currentState = state_link;
    }
    else if (localName.equalsIgnoreCase("pubdate")){
        currentState = state_pubdate;
    }
    else{
        currentState = state_unknown;
    }

}

@Override
public void endElement(String uri, String localName, String qName)
        throws SAXException {
// TODO Auto-generated method stub
    if (localName.equalsIgnoreCase("item")){
        feed.addItem(item);
    }
}

@Override
public void characters(char[] ch, int start, int length)
        throws SAXException {
 // TODO Auto-generated method stub

    String strCharacters = new String(ch,start,length);

    if (itemFound==true){
 // "item" tag found, it's item's parameter
        switch(currentState){
            case state_url:
                item.setUrl(strCharacters);
                break;
            case state_enclosure:
                item.setEnclosure(strCharacters);
                break;
            case state_title:
                item.setTitle(strCharacters);
                break;
            case state_description:
                item.setDescription(strCharacters);
                break;
            case state_link:
                item.setLink(strCharacters);
                break;
            case state_pubdate:
                item.setPubdate(strCharacters);
                break;
            default:
                break;
        }
    }
    else{
 // not "item" tag found, it's feed's parameter
        switch(currentState){
            case state_url:
                feed.setUrl(strCharacters);
                break;
            case state_enclosure:
                feed.setEnclosure(strCharacters);
                break;
            case state_title:
                feed.setTitle(strCharacters);
                break;
            case state_description:
                feed.setDescription(strCharacters);
                break;
            case state_link:
                feed.setLink(strCharacters);
                break;
            case state_pubdate:
                feed.setPubdate(strCharacters);
                break;
            default:
                break;
        }
    }

    currentState = state_unknown;
}

修改 我如何展示图片

   try {
    URL url = new URL(web.get(position).getEnclosure()+web.get(position).getUrl());
      HttpGet httpRequest;

      httpRequest = new HttpGet(url.toURI());

      HttpClient httpclient = new DefaultHttpClient();
     HttpResponse response = httpclient
             .execute(httpRequest);

      HttpEntity entity = response.getEntity();
      BufferedHttpEntity b_entity = new BufferedHttpEntity(entity);
      InputStream input = b_entity.getContent();
      ImageView img = (ImageView) rowView.findViewById(R.id.enclosure);
      Bitmap bitmap = BitmapFactory.decodeStream(input);

        img.setImageBitmap(bitmap);

       } catch (Exception ex) {
         ex.printStackTrace();
       }

1 个答案:

答案 0 :(得分:1)

您发布的代码与问题并不真正相关,您应该已经提取了Feed并解析了它以提取网址,然后您可以执行以下操作,但是我会推荐来自Square的Picasso而不是完成所有繁重的工作并自动添加缓存和中断请求等功能 - http://square.github.io/picasso/

try {
    InputStream inStream = (InputStream) new URL(url).getContent();
    Drawable d = Drawable.createFromStream(inStream, "my source name");
    return d;
} catch (Exception e) {
    return null;
}