0

我想在我的应用程序上阅读 RSS 提要,我一直基于一些指南,并且我成功地实现了基础知识。但是,当我打开一个 RSS 项目时,会显示标题,但描述(具有更多字符)以大约 13 行和三个点(...)结尾。我在 JAVA 文档中读到 StringBuffer 的容量有限,当它达到其全部容量时,它会设置一个点。这就是为什么我认为问题来自 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>
4

1 回答 1

2

不,StringBuffer没有这种行为。您可能正在使用 aTextViewellipsize设置了属性,或者您的提要数据实际上已被截断并被椭圆化。直接在浏览器中查看 RSS 提要,看看是否存在。

于 2012-03-07T20:22:54.367 回答