Avatar billede berner5300 Nybegynder
09. januar 2012 - 22:51 Der er 2 kommentarer og
1 løsning

Android XML parser

Hej alle

Jeg håber virkelig i kan hjælpe mig. Jeg sidder og prøver at lave en android app hvor jeg vil hente info fra en side. Det fungere også fint, men jeg vil gerne have lavet et ListView, så man kan trykke på teksten,  at man kommer ind på en anden side hvor der står en uddybende tekst.

Hvordan kan jeg gøre dette?

Jeg har koden her:
import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class OddsetActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /** Create a new layout to display the view */
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(1);
        /** Create a new textview array to display the results */
        TextView name[];
        TextView website[];
        TextView category[];
        try {
            URL url = new URL("http://www.offlines.dk/example.xml");
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(url.openStream()));
            doc.getDocumentElement().normalize();
            NodeList nodeList = doc.getElementsByTagName("nyhed");
            /** Assign textview array lenght by arraylist size */
            name = new TextView[nodeList.getLength()];
            website = new TextView[nodeList.getLength()];
            category = new TextView[nodeList.getLength()];
            for (int i = 0; i < nodeList.getLength(); i++) {
                Node node = nodeList.item(i);
                name[i] = new TextView(this);
                website[i] = new TextView(this);
                category[i] = new TextView(this);
                Element fstElmnt = (Element) node;
                NodeList nameList = fstElmnt.getElementsByTagName("overskrift");
                Element nameElement = (Element) nameList.item(0);
                nameList = nameElement.getChildNodes();
                NodeList websiteList = fstElmnt.getElementsByTagName("tekst");
                Element websiteElement = (Element) websiteList.item(0);
                websiteList = websiteElement.getChildNodes();
                website[i].setText("Odds: " + ((Node) websiteList.item(0)).getNodeValue());
                category[i].setText("Hvem: " + websiteElement.getAttribute("hvem") + "\n\n");
                layout.addView(name[i]);
                layout.addView(website[i]);
                layout.addView(category[i]);
            }
        } catch (Exception e) {
            System.out.println("XML Pasing Excpetion = " + e);
        }
        /** Set the layout view to display */
        setContentView(layout);
    }
}

Jeg får min XML kode fra: http://www.offlines.dk/example.xml

Det skal siges at jeg ikke har lavet koden selv. Men jeg forstår den mere eller mindre.

Håber der er nogen der vil hjælpe :)

- 200 point
Avatar billede heinzdmx Nybegynder
10. januar 2012 - 08:55 #1
Det jeg ville gøre var at lægge det hele i en liste, denne liste kan du så arbejde med og når du så laver din onclick kan du sende det objekt med og på den måde få sendt oplysningerne videre.


public static List<CustomObject> customObject = new List<CustomObject>();


Hvor du så laver

public class CustomObject
{
    String overskrift;
    String tekst;
    String hvem;
    String uddybelse;

    // Opret getter/setter
]
Avatar billede berner5300 Nybegynder
10. januar 2012 - 19:01 #2
Mange tak :)
Det hjalp rigtig meget. Du smider bare et svar :)
Avatar billede heinzdmx Nybegynder
11. januar 2012 - 10:08 #3
Svar her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester