Bonjour à tous Je suis relativement nouveau dans le développement Android et je suis en train de créer un lecteur RSS pour un site d'actualités. Le problème que j'ai est ce site avec le flux rss dont je veux obtenir des images est d'un type "< img src =" http ...... "" Ce que j'ai fait pour le code sur android est ... 2 classes ... RssItem et RssItem DisplayerAndroid Rss Image Problème
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<RssItem> getRssItems(String feedUrl) {
ArrayList<RssItem> rssItems = new ArrayList<RssItem>();
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 <item></item> 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;
}
mais je ne sais pas comment mettre l'élément d'image src
Je crée aussi un imageview qui montrera sur la mise en page xml
Dans l'autre classe r qui montre RSS article Displayer Je
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
}
le logcat m'a donné warnins à la ligne de l'élément rss que bitmap est d'obtenir dans le code
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.<init>(URL.java:275)
11-29 00:13:44.593: WARN/System.err(2997): at java.net.URL.<init>(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)
Que dois-je mettre en ces deux choses à grub l'image et surtout à rss classe d'objet Quoi qu'il en soit, si quelqu'un peut aider je serai reconnaissant
Il est pas clair ce que vous entendez par « mais je ne sais pas comment mettre la élément d'image src ". Pouvez-vous s'il vous plaît décrire cela mieux? De plus, certaines de vos questions n'ont pas été formatées en code alors qu'elles devraient l'être, ce qui les rend difficiles à lire. – elevine
le flux rss a les images dans ce format DroidAjax
Je comprends cela.Quel est le problème? Ma conjecture est que vous voulez prendre cette URL de l'image et l'afficher dans un android – elevine