2012-08-13 62 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