2016-07-24 42 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());