我正在尝试使用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();
}
答案 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;
}