2016-07-24 44 views
0

目前Java中的新功能。 我有這個代碼,我想存儲ListView的XML解析數據。但是當我嘗試在logcat中顯示我的ArrayList的內容時,它會給我這個[email protected]。我沒有正確存儲數據還是有其他錯誤?有人可以在這個問題上啓發我。無法顯示我的ArrayList

這是我的解析方法

public void parseXMLAndStoreIt(XmlPullParser myParser) { 
    int event; 
    String text=null; 

    try { 
     event = myParser.getEventType(); 
     FeedItem item = new FeedItem(); 

     while (event != XmlPullParser.END_DOCUMENT) { 
      String tagName = myParser.getName(); 

      switch (event){ 

       case XmlPullParser.START_TAG: 
        if(tagName.equalsIgnoreCase("item")){ 
         int eventChild = myParser.next(); 

          while(eventChild != XmlPullParser.END_DOCUMENT){ 
           String tagNameChild = myParser.getName(); 

           switch (eventChild){ 

            case XmlPullParser.START_TAG: 
             break; 

            case XmlPullParser.TEXT: 
             text = myParser.getText(); 
             break; 

            case XmlPullParser.END_TAG: 

             if(tagNameChild.equalsIgnoreCase("title")){ 
              item.setTitle(text); 
              feedItems.add(item); 
              Log.d("Title", item.getTitle()); 
             } 

             else if(tagNameChild.equalsIgnoreCase("link")){ 
              item.setLink(text); 
              feedItems.add(item); 
              Log.d("Link", item.getLink()); 
             } 

             else if(tagNameChild.equalsIgnoreCase("description")){ 

              String plain = Html.fromHtml(text).toString(); 
              //stripHtml(text); 
              item.setDescription(plain); 
              feedItems.add(item); 
              Log.d("Description", item.getDescription()); 
             } 

             else if(tagNameChild.equalsIgnoreCase("pubDate")){ 
              item.setPubDate(text); 
              feedItems.add(item); 
              Log.d("pubDate", item.getPubDate()); 
              //Log.d("pudDate",text); 
             } 

             else if(tagNameChild.equalsIgnoreCase("media:thumbnail") || tagNameChild.equalsIgnoreCase("media:content") || tagName.equalsIgnoreCase("enclosure")){ 

              //Output test 
              if(myParser.getAttributeValue(null,"url") != null) { 
               item.setThumbnailUrl(text); 
               feedItems.add(item); 
               Log.d("Thumbnail", item.getThumbnailUrl()); 
               //Log.d("ItemThumbnailUrl",myParser.getAttributeValue(null,"url")); 
              } 
             } 

             else if(tagNameChild.equalsIgnoreCase("item")){ 
              Log.d("Test", "" + feedItems.get(1)); 

             } 


             break; 



           } 

           eventChild = myParser.next(); 
           /*feedItems.add(item); 
           Log.d("Title", item.getTitle()); 
           Log.d("Link", item.getLink()); 
           Log.d("Description", item.getDescription()); 
           Log.d("pubDate", item.getPubDate()); 
           Log.d("Thumbnail", item.getThumbnailUrl());*/ 

          } 


        } 
        break; 

       case XmlPullParser.TEXT: 
        break; 

       case XmlPullParser.END_TAG: 
        break; 

      } 

      event = myParser.next(); 

     } 

     parsingComplete = false; 
    } 

    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

你用什麼適配器?它看起來像是在它期望的字符串處傳遞了一個FeedItem數組。 –

+1

給你什麼......是對一個沒有實現toString()的類的toString()的調用,所以你從java.lang.Object得到了默認的實現,它只是爲每個對象打印「引用」 。關於代碼質量的注意事項:不要將太多代碼推入** one **方法。例如,請閱讀「乾淨的代碼」和「單層抽象」。基本上,你寫在那裏是**難**測試;更糟糕的是:它很快就會變成維修噩夢。是的,讓事情工作很重要,但編寫可以理解的代碼更重要! – GhostCat

+0

@GhostCat謝謝。我知道我現在出了什麼問題。這只是我在線學習的一個教程。我會確保閱讀它。 –

回答

1

[email protected] 

表明您記錄(或打印)的對象,而不是一個字符串。 我猜想,這從該行起源:

Log.d("Test", "" + feedItems.get(1)); 

嘗試實施的FeedItem類toString方法。或者如果這是不可能的嘗試像

Log.d("Test", "" + feedItems.get(1).getTitle());