2010-11-29 3 views
2

TextView 화면에 아무 것도 기록되지 않습니다.xml에서 정보를 가져 오지만 표시되지 않음

나는 내가 잘못 여기서 뭘하는지 모르겠지만이 내 다음 코드 :

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

자바 코드 :

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

방금 ​​텍스트를 설정하려고 했나 :

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

그런 다음 코드는 다음을 포함하도록 변경

이있다 news.xml라는 간단한 레이아웃을 만드시겠습니까? – blindstuff

+0

UI 스레드에서 모든 작업을 수행하고 있다면 정말 나쁜 것입니다 ... – Falmarri

+1

멋진 포켓몬 시도/캐치 :) – ocodo

답변

1

당신은 TextView의 인스턴스화하고 각각 setContentView()를 호출 그들 중 ... 이것은 결코 작동하지 않을 것입니다. 적어도 각 레이아웃 지침 (즉 setLayoutParams은 각 TextView에 전화해야 함)을 제공해야하지만 어떤 종류의 컨테이너 객체 없이는 작동하지 않을지조차 모릅니다.

시도해보십시오. 대신 html.fromHtml의,

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); 
} 
관련 문제