根据listView的ItemClick从XML文件获取数据

时间:2014-04-23 03:48:11

标签: android xml-parsing

Hello Friends我正在寻找下面的XML解析解决方案是我的数据库示例: -

        <inneritem id="1" title="Cells" thumbnail="">
            <Seconditem id="3" title="Intro" thumbnail="" />
            <Seconditem id="4" title="Erythroc" thumbnail="" />
            <Seconditem id="5" title="Band Nerophil" thumbnail="" />
            <Seconditem id="6" title="Segmented Ntrophil" thumbnail="" />
            <Seconditem id="7" title="Eosinil" thumbnail="" />
        </inneritem>

        <inneritem id="2" title="Cells" thumbnail="">
            <Seconditem id="8" title="2Intro" thumbnail="" />
            <Seconditem id="9" title="2Erythroc" thumbnail="" />
            <Seconditem id="10" title="2Band Nerophil" thumbnail="" />
            <Seconditem id="11" title="2Segmented Ntrophil" thumbnail="" />
            <Seconditem id="12" title="2Eosinil" thumbnail="" />
        </inneritem>

现在我已经在listview中设置了ID为1和2的项目,并点击了任何项目,例如,如果我点击ID为1的项目,它将给我ID 1,并且在其点击时我想用标签加载数据Seconditem将id 1与新listview相关。那么我该如何实现呢。提前谢谢。

简而言之,我想检查id的条件,然后加载数据,以便我如何检查这些条件。我的代码是: -

            try {

                InputStream is = getActivity().getAssets().open("public_material.xml");

                DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();


                Document doc = dBuilder.parse(is);
                doc.getDocumentElement().normalize();

                doc.getElementsByTagNameNS("id", ItemsID);
                NodeList nList = doc.getElementsByTagName("Seconditem");
                Log.d("List count :- ", "" + nList.getLength());
                for (int temp = 0; temp < nList.getLength(); temp++) {
                    Node GetEementNode = nList.item(temp);
                    if (GetEementNode.getNodeType() == Node.ELEMENT_NODE) {


                        Element eElement = (Element) GetEementNode;


                        String strID = eElement.getAttribute("id");

                        String Title = eElement.getAttribute("title");
                        //String Thumbnail = eElement.getAttribute("thumbnail");


//                      GetterSetter row = new GetterSetter(strID,Title, Thumbnail);
                        GetterSetter row = new GetterSetter(strID,Title);
                        arrList.add(row);
                    }
                }

            } catch (Exception e) {

            }

            BaseAdapterData data = new BaseAdapterData(getActivity(), arrList);

            list2NewView.setAdapter(data);

3 个答案:

答案 0 :(得分:1)

我正在寻找的是public_material是我的xml,其中保存了数据: -

try{InputStream is = getActivity().getAssets().open("public_material.xml");

                    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
                    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();


                    doc = dBuilder.parse(is);
                    doc.getDocumentElement().normalize();

                    nList = doc.getElementsByTagName("inneritem");
                    for (int temp = 0; temp < nList.getLength(); temp++) {
                        Node GetEementNode = nList.item(temp);
                        if (GetEementNode.getNodeType() == Node.ELEMENT_NODE) {

                            eElement = (Element) GetEementNode;
                            String strID = eElement.getAttribute("id");

                            if(strID.equals(ItemsID)){
                                NodeList conditionList = eElement.getElementsByTagName("Seconditem");

                                for(int secondTemp = 0; secondTemp<conditionList.getLength();secondTemp++){
                                    Node getSecondNode = conditionList.item(secondTemp);
                                    if(getSecondNode.getNodeType() == Node.ELEMENT_NODE){
                                        Element SecondElement  = (Element) getSecondNode;
                                        String secondItemsDataID = SecondElement.getAttribute("id");
                                        String secondItemsData = SecondElement.getAttribute("title");
                                        GetterSetter row = new GetterSetter(secondItemsDataID,secondItemsData);
                                        arrList.add(row);

                                    }
                                }
                            }
    //                      String Title = eElement.getAttribute("title");
                            //String Thumbnail = eElement.getAttribute("thumbnail");


    //                      GetterSetter row = new GetterSetter(strID,Title, Thumbnail);
    //                      GetterSetter row = new GetterSetter(strID,Title);
    //                      arrList.add(row);
                        }
                    }

                } catch (Exception e) {

                }

答案 1 :(得分:0)

点击listview获取id并将其与for循环中的arrList.getStrId()进行比较,如果匹配获取数据并执行任何操作....

答案 2 :(得分:0)

尝试以下代码:

list2NewView.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
            {
                  if(list2NewView.get(arg2).toString().equals(arrList.get(arg2).toString())
                  {
                      // do your code here
                  }
            }
        });