2

こんにちは、私は自分のrssフィードを表示しようとしていますが、問題は、タイトルを表示しようとしているときに、rssフィードが何らかの形ですべてを表示することです(リンク、タイトル、さらにはフィードを読み取ろうとしているページの名前) 。これがコードのサンプルです。

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        List<JSONObject> jobs = new ArrayList<JSONObject>();
        try {

        } catch (Exception e) {
        Log.e("RSS ERROR", "Error loading RSS Feed Stream >> " + e.getMessage() + " //" + e.toString());
        }


        final Button button1 = (Button) findViewById(R.id.button1);

        button1.setText(aaa);


    }




    public static List<JSONObject> getLatestRssFeed(){

        String feed = "http://www.net.hr/rss/feeds/naslovnica/index.xml";

    RSSHandler rh = new RSSHandler();
    List<Article> articles = rh.getLatestArticles(feed);
    Log.e("RSS ERROR", "Number of articles " + articles.size());
    return fillData(articles);

    }



    private static List<JSONObject> fillData(List<Article> articles) {

        List<JSONObject> items = new ArrayList<JSONObject>();
        for (Article article : articles) {
            JSONObject current = new JSONObject();
            try {
             buildJsonObject(article, current);

                 aaa=article.getTitle();
         /*
This is where I'm trying to get the title from actually
*/        
        } catch (JSONException e) {
        Log.e("RSS ERROR", "Error creating JSON Object from RSS feed");
        }
        items.add(current);
            }

            return items;
        }



        private static void buildJsonObject(Article article, JSONObject current) throws JSONException {
    String title = article.getTitle();

    }

このクラスもあります

public class RSSHandler extends DefaultHandler {

private Article currentArticle = new Article();
private List<Article> articleList = new ArrayList<Article>();

private int articlesAdded = 0;

private static final int ARTICLES_LIMIT = 1;

StringBuffer chars = new StringBuffer();


public void startElement(String uri, String localName, String qName, Attributes atts) {
chars = new StringBuffer();
}



public void endElement(String uri, String localName, String qName) throws SAXException {

if (localName.equalsIgnoreCase("title"))
{
Log.d("LOGGING RSS XML", "Setting article title: " + chars.toString());
currentArticle.setTitle(chars.toString());

}
else if (localName.equalsIgnoreCase("description"))
{
Log.d("LOGGING RSS XML", "Setting article description: " + chars.toString());
currentArticle.setDescription(chars.toString());
}
else if (localName.equalsIgnoreCase("pubDate"))
{
Log.d("LOGGING RSS XML", "Setting article published date: " + chars.toString());
currentArticle.setPubDate(chars.toString());
}
else if (localName.equalsIgnoreCase("encoded"))
{
Log.d("LOGGING RSS XML", "Setting article content: " + chars.toString());
currentArticle.setEncodedContent(chars.toString());
}
else if (localName.equalsIgnoreCase("item"))
{

}
else if (localName.equalsIgnoreCase("link"))
{
try {
Log.d("LOGGING RSS XML", "Setting article link url: " + chars.toString());
currentArticle.setUrl(new URL(chars.toString()));
} catch (MalformedURLException e) {
Log.e("RSA Error", e.getMessage());
}

}





if (localName.equalsIgnoreCase("item")) {

articleList.add(currentArticle);

currentArticle = new Article();


articlesAdded++;
if (articlesAdded >= ARTICLES_LIMIT)
{
throw new SAXException();
}
}
}





public void characters(char ch[], int start, int length) {
chars.append(new String(ch, start, length));
}



public List<Article> getLatestArticles(String feedUrl) {
URL url = null;
try {

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

url = new URL(feedUrl);

xr.setContentHandler(this);
xr.parse(new InputSource(url.openStream()));


} catch (IOException e) {
Log.e("RSS Handler IO", e.getMessage() + " >> " + e.toString());
} catch (SAXException e) {
Log.e("RSS Handler SAX", e.toString());
} catch (ParserConfigurationException e) {
Log.e("RSS Handler Parser Config", e.toString());
}

return articleList;
}

}

また、プログラミング中にrssに遭遇したのはこれが初めてなので、これは私のコードではありませんが、ここにリンク https://github.com/robhinds/AndroidRssReader/blob/master/src/com/tmm/androidがあります。 /rssreader/RssListAdapter.java なので、他の問題(rssのバージョンが異なるなど)があるかどうか疑問に思っていましたが、彼のリンクでさえ私のアプリに同じことをしたとは思いません。

とにかく、最新の12のニュースのヘッドラインとニュースへのリンクだけを取得するアプリが必要です。ありがとう

4

0 に答える 0