Android - 如何为单个列表行打开不同的列表

时间:2014-01-31 19:45:45

标签: java android xml list arraylist

我有这个xml(我不知道它是否完美):

   <?xml version="1.0" encoding="UTF-8"?>
<lista>
    <riga>
        <id>1</id>
        <title>Fornace</title>
        <thumb_url>http://i43.tinypic.com/29lzjpv.jpg</thumb_url>
        <prova>
        <title>prova1 - Fornace</title>
        </prova>
    </riga>
    <riga>
        <id>2</id>
        <title>Basilica</title>
        <thumb_url>http://i40.tinypic.com/qs8ihe.jpg</thumb_url>
        <prova>
        <title>prova2</title>
        </prova>
    </riga>
     <riga>
         <id>3</id>
        <title>Foro Boario</title>
        <prova>
        <title>prova3</title>
        </prova>
    </riga>
</lista>

我想解析它并为单个列表行打开不同的列表。我该怎么办?

MainActivity:

   public class Lista extends Activity {
        // All static variables
        static String convertStreamToString(java.io.InputStream is) {
            @SuppressWarnings("resource")
            java.util.Scanner s = new      

java.util.Scanner(is).useDelimiter("\\A");

            return s.hasNext() ? s.next() : "";
        };
    //  static final String URL = "lista_principale.xml";
        // XML node keys
        static final String KEY_RIGA = "riga"; // parent node
        static final String KEY_ID = "id";
        static final String KEY_TITLE = "title";
        static final String KEY_THUMB_URL = "thumb_url";
        static final String KEY_PROVA = "prova";

        ListView list;
        LazyAdapter adapter;

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

的ArrayList&GT; listaElem = new ArrayList&gt;();

            XMLParser parser = new XMLParser();
            //String xml = parser.getXmlFromUrl(URL); // getting XML from URL

            InputStream is = getResources().openRawResource(R.raw.lista_principale);

            String xml=convertStreamToString(is);


            Document doc = parser.getDomElement(xml); // getting DOM element

            NodeList nl = doc.getElementsByTagName(KEY_RIGA);
            // looping through all song nodes <song>
            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_ID, parser.getValue(e, KEY_ID));
                map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
                map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
                map.put(KEY_PROVA, parser.getValue(e, KEY_PROVA));


                // adding HashList to ArrayList
                listaElem.add(map);
            }


            list=(ListView)findViewById(R.id.list);

            // Getting adapter by passing xml data ArrayList
            adapter=new LazyAdapter(this, listaElem);        
            list.setAdapter(adapter);

            // Click event for single list row
            list.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id)  {

                    Intent i = new Intent(getApplicationContext(), Lista2.class);

                    String posto_id = ((TextView) view.findViewById(R.id.title)).getText().toString();

                    Toast.makeText(getApplicationContext(), "Album Id: " + posto_id , Toast.LENGTH_SHORT).show();

                    i.putExtra("posto_id", posto_id);

                    startActivity(i); 



                }
            });     

        }   
    }

SingleListActivity

public class Lista2 extends Activity {


    String posto_id = null;

    LazyAdapter adapter;
    static String convertStreamToString(java.io.InputStream is) {
        @SuppressWarnings("resource")
        java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
        return s.hasNext() ? s.next() : "";
    };

    static final String KEY_TITLE = "title";
    static final String KEY_PROVA = "prova";



    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista2);

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

        XMLParser parser = new XMLParser();
        //String xml = parser.getXmlFromUrl(URL); // getting XML from URL

        InputStream is = getResources().openRawResource(R.raw.lista_principale);

        String xml=convertStreamToString(is);


        Intent i = getIntent();
        int k=0;
        k = i.getIntExtra("posto_id",k);

       // i.getStringExtra(posto_id);


         Document doc = parser.getDomElement(xml); 


            NodeList nl = doc.getElementsByTagName(KEY_PROVA);

            for (k=0; k< nl.getLength();k++){



            HashMap<String, String> map2 = new HashMap<String, String>();

            Element f = (Element) nl.item(k);
            map2.put(KEY_TITLE, parser.getValue(f, KEY_TITLE));

            listaElem.add(map2);
            }


        // Displaying all values on the screen
        ListView lblSong = (ListView) findViewById(R.id.list2);

        adapter=new LazyAdapter(this, listaElem);   
        lblSong.setAdapter(adapter);
    }
}

0 个答案:

没有答案