2011-07-07 69 views
0

我試着加載一些新聞從blogspot.The RSS得到的是一個小different.This是它的形式黑畫面時新聞

<feed> 
<entry> 

<id>tag:blogger.com,1999:blog-7518961852167560062.post-4523318015704090243</id> 
<published>2011-07-07T15:08:00.003+03:00</published> 
<updated>2011-07-07T15:11:04.213+03:00</updated> 
<category scheme='http://www.blogger.com/atom/ns#' term='Karaoke Night'/> 
<category scheme='http://www.blogger.com/atom/ns#' term='Deutsche Ecke'/> 
<category scheme='http://www.blogger.com/atom/ns#' term='Johnny Vavouras'/> 
<category scheme='http://www.blogger.com/atom/ns#' term='BOIKOS SA'/> 
<title type='text'>Karaoke Night</title> 
<summary type='text'>Be The Star Part 2 Την πρώτη φορά έγινε χαμός! Όλες και όλοι θέλατε να πιείτε την μπύρα σας και να πείτε και ένα τραγουδάκι. Το ένα έγιναν δύο, τα δύο τρία και τα τρία τέσσερα κοκ. Και όταν παίρνω φόρα τίποτα δεν με σταματά ήσασταν! Και αφού περάσαμε καλά και ρωτήσατε πότε θα ξαναγίνει βραδιά Karaoke, ορίστε η απάντηση:Ο Johnny Vavouras και η Μαρία Γκαγκώση θα είναι πάλι κοντά μας με τεράστια </summary> 
<link rel='replies' type='application/atom+xml' href='http://deutscheecke-gr.blogspot.com/feeds/4523318015704090243/comments/default' title='Σχόλια ανάρτησης'/> 
<link rel='replies' type='text/html' href='http://deutscheecke-gr.blogspot.com/2011/07/karaoke-night.html#comment-form' title='0 σχόλια'/> 
<link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7518961852167560062/posts/default/4523318015704090243'/> 
<link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7518961852167560062/posts/default/4523318015704090243'/> 
<link rel='alternate' type='text/html' href='http://deutscheecke-gr.blogspot.com/2011/07/karaoke-night.html' title='Karaoke Night'/> 
<author> 
<name>ranic19</name> 
<uri>http://www.blogger.com/profile/18311687460079471825</uri> 
<email>[email protected]</email> 
<gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04547458941145961505'/> 
</author> 
<media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-A0grH2ckHtA/ThLlFH1vUdI/AAAAAAAAAPw/uuo4hhJDygo/s72-c/DEUTSCHE+ECKE+14-7.jpg' height='72' width='72'/> 
<thr:total>0</thr:total> 

</entry> 

</feed> 

所以我嘗試改變通常的方式即時得到RSS ....我的新baseFeedParser類是這樣的:

static String feedUrlString = "http://deutscheecke-gr.blogspot.com/feeds/posts/default"; 


    static final String ATOM_NAMESPACE = "http://www.w3.org/2005/Atom"; 
    static final String FEED = "feed"; 
    static final String ENTRY = "entry"; 

    static final String PUBLISHED = "publised"; 
    static final String SUMMARY = "summary"; 
    static final String LINK = "link"; 
    static final String HREF = "href"; 

    static final String TITLE = "title"; 

    private final URL feedUrl; 

    protected BaseFeedParser(){ 
     try { 
      this.feedUrl = new URL(feedUrlString); 
     } catch (MalformedURLException e) { 
      throw new RuntimeException(e); 
     } 
    } 

    protected InputStream getInputStream() { 
     try { 
      return feedUrl.openConnection().getInputStream(); 
     } catch (IOException e) { 
      throw new RuntimeException(e); 
     } 
    } 

    public List<Message> parse() { 
     final Message currentMessage = new Message(); 
     RootElement root = new RootElement(ATOM_NAMESPACE,FEED); 
     final List<Message> messages = new ArrayList<Message>(); 
     Element item= root.getChild(ENTRY); 


     item.getChild(PUBLISHED).setEndTextElementListener(new EndTextElementListener(){ 
      public void end(String body) { 
       currentMessage.setDate(body); 
      } 
     }); 
     item.getChild(SUMMARY).setEndTextElementListener(new EndTextElementListener(){ 
      public void end(String body) { 
       currentMessage.setDescription(body); 
      } 
     }); 

    // Element itemlist2 = root.getChild(ATOM_NAMESPACE,LINK); 
    // Element item2 = itemlist2.getChild(ATOM_NAMESPACE,HREF); 
    // item2.setEndElementListener(new EndElementListener(){ 
    //  public void end() { 
    //   messages.add(currentMessage.copy()); 
    //  } 
    // }); 
     item.getChild(LINK).setEndTextElementListener(new EndTextElementListener(){ 
      public void end(String body) { 
       currentMessage.setLink(HREF); 
      } 
     }); 
     item.getChild(TITLE).setEndTextElementListener(new EndTextElementListener(){ 
      public void end(String body) { 
       currentMessage.setTitle(body); 
      } 
     }); 
     try { 
      Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler()); 
     } catch (Exception e) { 
      throw new RuntimeException(e); 
     } 
     return messages; 
    } 
} 

現在,在我的主類即時通訊試圖加載RSS的標題一樣,

public class events extends ListActivity { 

    private List<Message> messages; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.events); 
     loadFeed(); 
    } 

    private void loadFeed(){ 
     try{ 
      BaseFeedParser parser = new BaseFeedParser(); 
      messages = parser.parse(); 
      List<String> titles = new ArrayList<String>(messages.size()); 
      for (Message msg : messages){ 

       titles.add(msg.getTitle()); 
      } 
      ArrayAdapter<String> adapter = 
       new ArrayAdapter<String>(this, R.layout.rowevents,titles); 
      this.setListAdapter(adapter); 
     } catch (Throwable t){ 
      Log.e("Deutsche Ecke News",t.getMessage(),t); 
     } 
    } 

最後,當我運行我的應用程序,我沒有erros,但唯一的想法,我看到的是一個黑屏...所以我認爲我的錯誤是在我的代碼...可能我有一些幫助嗎?謝謝!! :)

+0

對不起,但任何人都可以幫忙嗎? – kostas

回答

0

您的loadFeed方法正在主UI線程上運行,所以它阻止了UI的更新。嘗試在單獨的線程上運行loadFeed。您可能需要考慮使用AsyncTask或Handler來達到此目的。

+0

我在我的第一個「主」類中使用了asyncTask,其中是rss.With異步任務的按鈕,我提供了一個進度條,直到消息加載。您認爲我必須在我的loadFeed中進行操作嗎? – kostas

+0

我可以有一個黑色的屏幕,因爲它不加載任何消息? – kostas

+0

這部分loadFeed需要在AsyncTask的doInBackground中完成: BaseFeedParser parser = new BaseFeedParser(); messages = parser.parse(); 列表 titles = new ArrayList (messages.size()); (Message msg:messages) { titles.add(msg.getTitle()); } – elevine