2012-08-13 60 views
1

對不起,如果我弄糊塗了。我編輯了整個問題。Android XMLparse to Arraylist

我使用XMLPARSER爲我的網站服務器上託管的網址。

我想解析我的網址列表從url.add(map);intent.putExtra(Extra.IMAGES, imageUrls);所以,我可以從我的XMLparser檢索網址。請指導我如何使用代碼進行操作。我嘗試顯示錯誤

java.lang.ArrayStoreException:源[0]的java.util.HashMap 不能被存儲在類型爲java.lang.String []

public class HomeActivity extends BaseActivity { 

     static final String URL = "http://*******"; 


     static final String KEY_LIST = "list"; 
     static final String KEY_THUMB_URL = "thumb_url"; 



     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.ac_home); 

      ArrayList<HashMap<String, String>> url = new ArrayList<HashMap<String, String>>(); 

      XMLParser parser = new XMLParser(); 
      String xml = parser.getXmlFromUrl(URL); 
      Document doc = parser.getDomElement(xml); 
      NodeList nl = doc.getElementsByTagName(KEY_LIST); 

      for (int i = 0; i < nl.getLength(); i++) { 
       // creating new HashMap 
       HashMap<String, String> map = new HashMap<String, String>(); 
       Element e = (Element) nl.item(i); 
       // adding each child node to HashMap key => value 

       map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL)); 

       // adding HashList to ArrayList 
       url.add(map); // <***** Set the results from here to imageUrls 
      } 

     imageUrls = (String[]) url.toArray(new String[0]); // <----***Error**** 

     } 
     public void onImageGridClick(View view) { 
      Intent intent = new Intent(this, ImageGridActivity.class); 
      intent.putExtra(Extra.IMAGES, imageUrls); 
      startActivity(intent); 
     } 

     public void onImagePagerClick(View view) { 
      Intent intent = new Intent(this, ImagePagerActivity.class); 
      intent.putExtra(Extra.IMAGES, imageUrls); 
      startActivity(intent); 
     } 

    } 
的目標數組類型的
+0

任何人都可以看看我的代碼? – 2012-08-13 06:39:42

+0

在你的問題「你想要什麼?」中具體說明,你的問題很混亂。如果您只想添加XML解析器URL,則不要添加來自heavy_images.xml的URL,還有一件事情要理解的事情不是直接從GitHub或任何代碼源複製它。 – rajpara 2012-08-13 07:23:49

+0

對不起,我編輯了我的問題。請指導我Android編碼器 – 2012-08-13 07:36:20

回答

1

試試這個代碼

public class MainActivity extends BaseActivity { 

    String[] imageUrls; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ac_home); 
     ArrayList<String> url = new ArrayList<String>(); 
     try { 
      URL url_link = new URL("http:******"); 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(new InputSource(url_link.openStream())); 
      doc.getDocumentElement().normalize(); 
      NodeList nodeList = doc.getElementsByTagName("list"); 

      for (int i = 0; i < nodeList.getLength(); i++) { 
       Node node = nodeList.item(i); 

       Element fstElmnt = (Element)node; 
       NodeList nameList = fstElmnt.getElementsByTagName("thumb_url"); 
       Element nameElement = (Element)nameList.item(0); 
       nameList = nameElement.getChildNodes(); 

       url.add(nameList.item(0).getNodeValue()); 
      } 
      imageUrls = (String[]) url.toArray(new String[0]); 
     } catch (Exception e) { 
      System.out.println("XML Pasing Excpetion = " + e); 
     } 

    } 
    public void onImageGridClick(View view) { 
     Intent intent = new Intent(this, ImageGridActivity.class); 
     intent.putExtra(Extra.IMAGES, imageUrls); 
     startActivity(intent); 
    } 

    public void onImagePagerClick(View view) { 
     Intent intent = new Intent(this, ImagePagerActivity.class); 
     intent.putExtra(Extra.IMAGES, imageUrls); 
     startActivity(intent); 
    } 
} 
+1

非常感謝Android編碼器。你應該得到我5星。感謝一百萬次 – 2012-08-13 08:20:50