2010-11-29 74 views
2

沒有任何內容寫入TextView屏幕。從xml中提取信息但不會顯示

我不知道我在做什麼錯在這裏,但是這是我下面的代碼:

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

Java代碼:

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

你嘗試只是設置文本,而不是html.fromHtml? – blindstuff 2010-11-29 21:09:52

回答

1

您實例TextView S和調用setContentView()每他們...這是永遠不會工作。至少你需要給出一些佈局指令(即每個TextView上調用setLayoutParams),但我甚至不確定沒有某種容器對象就可以工作。

試試這個。創建一個名爲news.xml簡單的佈局具有這樣的:

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

然後改變你的代碼,包括以下內容:

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