Android Rss图像问题

大家好我是Android开发的新手,我正在为新闻网站创建一个RSS阅读器。 我遇到的问题是,我想要获取图像的rss feed的网站是“<img src =”http ……“” 我在android上的代码所做的是…… 2个类… RssItem和RssItem显示器

public class RssItem { private String title; private String description; private Date pubDate; private String link; private static ImageView image; public RssItem(String title, String description,ImageView image, Date pubDate, String link) { this.title = title; this.description = description; RssItem.image = image; this.pubDate = pubDate; this.link = link; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public ImageView getImage(ImageView image) { return this.image = image; } public void setImage(ImageView image) { this.image = image; } public Date getPubDate() { return pubDate; } public void setPubDate(Date pubDate) { this.pubDate = pubDate; } public String getLink() { return link; } public void setLink(String link) { this.link = link; } @Override public String toString() { SimpleDateFormat sdf = new SimpleDateFormat("MM/dd - hh:mm:ss"); String result = getTitle() + " ( " + sdf.format(this.getPubDate()) + " )"; return result; } public static ArrayList getRssItems(String feedUrl) { ArrayList rssItems = new ArrayList(); try { //open an URL connection make GET to the server and //take xml RSS data URL url = new URL(feedUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream is = conn.getInputStream(); //DocumentBuilderFactory, DocumentBuilder are used for //xml parsing DocumentBuilderFactory dbf = DocumentBuilderFactory .newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); //using db (Document Builder) parse xml data and assign //it to Element Document document = db.parse(is); Element element = document.getDocumentElement(); //take rss nodes to NodeList NodeList nodeList = element.getElementsByTagName("item"); if (nodeList.getLength() > 0) { for (int i = 0; i < nodeList.getLength(); i++) { //take each entry (corresponds to  tags in //xml data Element entry = (Element) nodeList.item(i); Element _titleE = (Element) entry.getElementsByTagName( "title").item(0); Element _descriptionE = (Element) entry .getElementsByTagName("description").item(0); Element _imageE = (Element) entry .getElementsByTagName("image").item(0); Element _pubDateE = (Element) entry .getElementsByTagName("pubDate").item(0); Element _linkE = (Element) entry.getElementsByTagName( "link").item(0); String _title = _titleE.getFirstChild().getNodeValue(); String _description = _descriptionE.getFirstChild().getNodeValue(); // ImageView image = (ImageView)findViewbyId(R.id.MyImage); // Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(feedUrl).getContent()); // image.setImageBitmap(bitmap); //} catch (MalformedURLException e) { /*try { //where imageUrl is what you pulled out from the rss feed Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(feedUrl).getContent()); image.setImageBitmap(bitmap); } catch (MalformedURLException e) { //log exception here } catch (IOException e) { //log exception here } */ Date _pubDate = new Date(_pubDateE.getFirstChild().getNodeValue()); String _link = _linkE.getFirstChild().getNodeValue(); //create RssItemObject and add it to the ArrayList RssItem rssItem = new RssItem(_title, _description, image, _pubDate, _link); rssItems.add(rssItem); } } } } catch (Exception e) { e.printStackTrace(); } return rssItems; } 

但我不知道如何把src图像元素

我还创建了一个将在布局xml上显示它的imageview

在另一个显示我有RSS项目显示器的类中

 public class RssItemDisplayer extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rss_item_displayer); RssItem selectedRssItem = com.AndroidRSSReader.AndroidRSSReader.selectedRssItem; //Bundle extras = getIntent().getExtras(); TextView titleTv = (TextView)findViewById(R.id.titleTextView); TextView contentTv = (TextView)findViewById(R.id.contentTextView); ImageView image=(ImageView)findViewById(R.id.MyImage); String title = ""; SimpleDateFormat sdf = new SimpleDateFormat("MM/dd - hh:mm:ss"); title = "\n" + selectedRssItem.getTitle() + " ( " + sdf.format(selectedRssItem.getPubDate()) + " )\n\n"; String content = ""; content += selectedRssItem.getDescription() + "\n" + selectedRssItem.getLink(); titleTv.setText(title); contentTv.setText(content); image=selectedRssItem.getImage(image); try { String feedUrl = null; //where imageUrl is what you pulled out from the rss feed Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(feedUrl).getContent()); image.setImageBitmap(bitmap); } catch (MalformedURLException e) { //log exception here } catch (IOException e) { //log exception here } 

logcat给了我warnins到rss项的行,在代码中得到位图

 11-29 00:13:44.593: WARN/System.err(2997): java.net.MalformedURLException: Protocol not found: 11-29 00:13:44.593: WARN/System.err(2997): at java.net.URL.(URL.java:275) 11-29 00:13:44.593: WARN/System.err(2997): at java.net.URL.(URL.java:159) 11-29 00:13:44.593: WARN/System.err(2997): at com.AndroidRSSReader.RssItem.getRssItems(RssItem.java:92) 11-29 00:13:44.593: WARN/System.err(2997): at com.AndroidRSSReader.AndroidRSSReader.refressRssList(AndroidRSSReader.java:301) 11-29 00:13:44.593: WARN/System.err(2997): at com.AndroidRSSReader.AndroidRSSReader.onCreate(AndroidRSSReader.java:229) 11-29 00:13:44.593: WARN/System.err(2997): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-29 00:13:44.593: WARN/System.err(2997): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 11-29 00:13:44.593: WARN/System.err(2997): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 11-29 00:13:44.593: WARN/System.err(2997): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 11-29 00:13:44.603: WARN/System.err(2997): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 11-29 00:13:44.603: WARN/System.err(2997): at android.os.Handler.dispatchMessage(Handler.java:99) 11-29 00:13:44.613: WARN/System.err(2997): at android.os.Looper.loop(Looper.java:123) 11-29 00:13:44.613: WARN/System.err(2997): at android.app.ActivityThread.main(ActivityThread.java:4627) 11-29 00:13:44.613: WARN/System.err(2997): at java.lang.reflect.Method.invokeNative(Native Method) 11-29 00:13:44.613: WARN/System.err(2997): at java.lang.reflect.Method.invoke(Method.java:521) 11-29 00:13:44.613: WARN/System.err(2997): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876) 11-29 00:13:44.613: WARN/System.err(2997): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) 11-29 00:13:44.613: WARN/System.err(2997): at dalvik.system.NativeStart.main(Native Method) 

我应该把这两件事放在grub图像上,特别是rss项目类无论如何如果有人可以帮助我会感激不尽

您的RssItem类不应具有以下内容:

 private static ImageView image; 

替换为:

 private String imageUrl; 

getRssItems方法中,使用_imageE获取_imageE的值。 然后使用imageUrl ,如下所述。

ImageView将仅显示设备上本地存储的图像,因此将其设置为远程URL将不起作用。 可以在这里找到一个解决方案: Android,在URL上创建一个等于ImageView图像的图像因此,您需要更改:

 titleTv.setText(title); image.setImageURI(uri); contentTv.setText(content); 

至:

 titleTv.setText(title); contentTv.setText(content); try { //where imageUrl is what you pulled out from the rss feed Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent()); image.setImageBitmap(bitmap); } catch (MalformedURLException e) { //log exception here } catch (IOException e) { //log exception here }