Android的XMLPARSE来的ArrayList [英] Android XMLparse to Arraylist

查看:131
本文介绍了Android的XMLPARSE来的ArrayList的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对不起,如果我做的事情混淆。我编辑了整个问题。

我用XMLPARSER为我的网址是对我的网络服务器托管。

我想从解析 url.add(图)我的URL列表; intent.putExtra(Extra.IMAGES,imageUrls); ,这样我可以检索我的XMLPARSER的URL。请指导我如何使用codeS做到这一点。我试图显示误差


  

java.lang.ArrayStoreException:源[0]类型的java.util.HashMap的
  不能存储在类型的目标数组java.lang.String中[]


 公共类HomeActivity扩展BaseActivity {        静态最终字符串URL =HTTP:// *******;
        静态最后弦乐KEY_LIST =清单;
        静态最后弦乐KEY_THUMB_URL =thumb_url;        @覆盖
        公共无效的onCreate(捆绑savedInstanceState){
            super.onCreate(savedInstanceState);
            的setContentView(R.layout.ac_home);            ArrayList的<&HashMap的LT;字符串,字符串>> URL =新的ArrayList<&HashMap的LT;字符串,字符串>>();            XMLParser的解析器=新XMLParser的();
            字符串XML = parser.getXmlFromUrl(URL);
            文档的文档= parser.getDomElement(XML);
            节点列表NL = doc.getElementsByTagName(KEY_LIST);            的for(int i = 0; I< nl.getLength();我++){
                //创建新的HashMap
                HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();
                元素e =(元)nl.item(I)
                //将每个子节点的HashMap键=>值                map.put(KEY_THUMB_URL,parser.getValue(即KEY_THUMB_URL));                //添加HashList到ArrayList的
                url.add(地图); //< *****设置的结果从这里到imageUrls
            }        imageUrls =(字符串[])url.toArray(新的String [0]); //< ---- ***错误****        }
        公共无效onImageGridClick(查看视图){
            意向意图=新意图(这一点,ImageGridActivity.class);
            intent.putExtra(Extra.IMAGES,imageUrls);
            startActivity(意向);
        }        公共无效onImagePagerClick(查看视图){
            意向意图=新意图(这一点,ImagePagerActivity.class);
            intent.putExtra(Extra.IMAGES,imageUrls);
            startActivity(意向);
        }    }


解决方案

试试这个code

 公共类MainActivity扩展BaseActivity {    的String [] imageUrls;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.ac_home);
        ArrayList的<串GT; URL =新的ArrayList<串GT;();
        尝试{
            URL = URL_LINK新的URL(HTTP:******);
            DBF的DocumentBuilderFactory = DocumentBuilderFactory.newInstance();
            的DocumentBuilder分贝= dbf.newDocumentBuilder();
            文档的文档= db.parse(新的InputSource(url_link.openStream()));
            doc.getDocumentElement()正常化()。
            节点列表节点列表= doc.getElementsByTagName(名单);            的for(int i = 0; I< nodeList.getLength();我++){
                节点node = nodeList.item(ⅰ);                元素fstElmnt =(元素)节点;
                节点列表名称列表= fstElmnt.getElementsByTagName(thumb_url);
                元件nameElement =(元件)nameList.item(0);
                NAMELIST = nameElement.getChildNodes();                url.add(nameList.item(0).getNodeValue());
            }
            imageUrls =(字符串[])url.toArray(新的String [0]);
        }赶上(例外五){
            的System.out.println(XML帕兴错误时抛出=+ e)条;
        }    }
    公共无效onImageGridClick(查看视图){
        意向意图=新意图(这一点,ImageGridActivity.class);
        intent.putExtra(Extra.IMAGES,imageUrls);
        startActivity(意向);
    }    公共无效onImagePagerClick(查看视图){
        意向意图=新意图(这一点,ImagePagerActivity.class);
        intent.putExtra(Extra.IMAGES,imageUrls);
        startActivity(意向);
    }
}

Sorry, if I've made things confusing. I edited the whole question.

I'm using XMLPARSER for my urls that is hosted on my webserver.

I would like to parse my url list from url.add(map); into intent.putExtra(Extra.IMAGES, imageUrls); So that i could retrieve urls from my XMLparser. Please guide me how to do it with codes. My attempt shows error

java.lang.ArrayStoreException: source[0] of type java.util.HashMap cannot be stored in destination array of type 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);
        }

    }

解决方案

Try this code

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);
    }
}

这篇关于Android的XMLPARSE来的ArrayList的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆