我想閱讀我的應用程序中的RSS源,我一直基於一些指南,並且我成功實現了基礎知識。但是,當我打開RSS項目時,標題被顯示,但描述(包含更多字符)以13行和3個點(...)結尾。我已經在JAVA文檔中讀到過,StringBuffer的容量有限,當它達到其最大容量時,它會設置一個分數。這就是爲什麼我認爲問題來自StringBuffer:無法顯示所有description.StringBuffer容量?
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException {
// Nous réinitialisons le buffer a chaque fois qu'il rencontre un item
buffer = new StringBuffer();
// Ci dessous, localName contient le nom du tag rencontré
// Nous avons rencontré un tag ITEM, il faut donc instancier un nouveau feed
if (localName.equalsIgnoreCase(ITEM)){
this.currentFeed = new Feed();
inItem = true;
}
// Vous pouvez définir des actions à effectuer pour chaque item rencontré
if (localName.equalsIgnoreCase(TITLE)){
// Nothing to do
}
if (localName.equalsIgnoreCase(LINK)){
// Nothing to do
}
if (localName.equalsIgnoreCase(PUBDATE)){
// Nothing to do
}
if (localName.equalsIgnoreCase(CREATOR)){
// Nothing to do
}
if(localName.equalsIgnoreCase(DESCRIPTION)){
}
}
@Override
public void endElement(String uri, String localName, String name) throws SAXException {
if (localName.equalsIgnoreCase(TITLE)){
if(inItem){
// Les caractères sont dans l'objet buffer
this.currentFeed.setTitle(buffer.toString());
buffer = null;
}
}
if (localName.equalsIgnoreCase(LINK)){
if(inItem){
this.currentFeed.setLink(buffer.toString());
buffer = null;
}
}
if (localName.equalsIgnoreCase(PUBDATE)){
if(inItem){
this.currentFeed.setPubDate(buffer.toString());
buffer = null;
}
}
if (localName.equalsIgnoreCase(CREATOR)){
if(inItem){
this.currentFeed.setCreator(buffer.toString());
buffer = null;
}
}
if(localName.equalsIgnoreCase(DESCRIPTION)){
if(inItem){
this.currentFeed.setDescription(buffer.toString());
buffer = null;
}
}
if (localName.equalsIgnoreCase(ITEM)){
feeds.add(currentFeed);
inItem = false;
}
}
// * Tout ce qui est dans l'arborescence mais n'est pas partie
// * intégrante d'un tag, déclenche la levée de cet événement.
// * En général, cet événement est donc levé tout simplement
// * par la présence de texte entre la balise d'ouverture et
// * la balise de fermeture
public void characters(char[] ch,int start, int length) throws SAXException{
String lecture = new String(ch,start,length);
if(buffer != null) buffer.append(lecture);
}
// cette méthode nous permettra de récupérer les données
public ArrayList<Feed> getData(){
return feeds;
}
}
請幫忙嗎?非常感謝你。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView android:text="" android:id="@+id/tv_title" android:layout_gravity="center_horizontal" android:layout_height="50dp" android:layout_width="fill_parent"/>
<TextView android:text="" android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp"/>
<TextView android:text="" android:id="@+id/tv_date" android:layout_marginTop="30dp" android:layout_height="fill_parent" android:layout_width="fill_parent"/>
</LinearLayout>
你可以發佈URL到你的RSS源嗎? – kabuko 2012-03-07 20:36:45
@kabuko:http://feeds.feedburner.com/Frandroid – androniennn 2012-03-07 20:37:56
這顯然是橢圓形的來源。顯然,Chrome爲獲取完整文章做了一些特殊的事情,這可能是你看到的並且認爲它沒有被截斷,但是如果你看看view-source:feeds.feedburner.com/Frandroid,你可以看到它是。 – kabuko 2012-03-07 20:44:48