2010-11-29 16 views
2

Nichts wird in den TextView-Bildschirm geschrieben.Informationen aus XML abrufen, aber nicht anzeigen

Ich bin nicht sicher, was ich falsch hier zu tun, aber das ist mein Code ein:

<?xml version="1.0"?> 
<news> 
    <article title="TITLE HERE" link="*.php?showtopic=118" date="DATE HERE"></article> 
</news> 

Java-Code:

try { 
    //open an URL connection make GET to the server and 
    URL url = new URL("http://.../m_news.xml"); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
    InputStream is = conn.getInputStream(); 

    //DocumentBuilderFactory, DocumentBuilder are used for 
    //xml parsing 
    DocumentBuilderFactory dbf = DocumentBuilderFactory 
     .newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 

    //using db (Document Builder) parse xml data and assign 
    //it to Element 
    Document document = db.parse(is); 
    Element element = document.getDocumentElement(); 

    NodeList nodeList = element.getElementsByTagName("news"); 
    NodeList nodeList2 = element.getElementsByTagName("article"); 

     if (nodeList.getLength() > 0) { 
      for (int i = 0; i < nodeList2.getLength(); i++) { 
       Element entry = (Element) nodeList.item(0); 

       Element _rowE = (Element) entry.getElementsByTagName("article").item(i); 
       Node _rowTITLE = _rowE.getAttributes().getNamedItem("title"); 
       Node _rowLINK = _rowE.getAttributes().getNamedItem("link"); 

       TextView textview = new TextView(this); 
       textview.setMovementMethod(LinkMovementMethod.getInstance()); 
       String text = "<a href='"+_rowLINK.getNodeValue()+"'>"+_rowTITLE.getNodeValue()+"</a>"; 
       textview.setText(Html.fromHtml(text)); 
       setContentView(textview); 
      } 
     }  
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

Haben Sie versucht, nur den Text einstellen, statt html.fromHtml? – blindstuff

+0

Wenn Sie all das im UIhread tun, ist das wirklich schlecht ... – Falmarri

+1

nice pokemon versuchen/fangen :) – ocodo

Antwort

1

Du Instanziieren TextView s und ruft setContentView() mit jedem von ihnen ... das wird nie funktionieren. Zumindest müssen Sie einige Layout-Anweisungen geben (z. B. rufen Sie setLayoutParams auf jedem TextView), aber ich bin nicht einmal sicher, dass das ohne eine Art von Container-Objekt funktioniert.

Versuchen Sie es. Erstellen Sie ein einfaches Layout news.xml genannt, die dies hat:

<LinearLayout 
    android:id="@+id/newsItems" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
/> 

dann Ihren Code ändern, schließen Folgendes ein:

setContentView(R.layout.news); 
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.newsItems); 
... 
for (int i = 0; i < nodeList2.getLength(); i++) { 
    ... 
    TextView textview = new TextView(this); 
    textview.setLayoutParams(new LinearLayout.LayoutParams(FILL_PARENT, WRAP_CONTENT)); 
    ... 
    textview.setText(Html.fromHtml(text)); 
    linearLayout.addView(textview); 
} 
Verwandte Themen