1
for (Element eHead : eHeadder) 
 {
String tag = eHead.tagName();
    if(tag.equals("p")
    {
     final String parsedText = eHead.text();
     Log.d("testing5", parsedText);
     runOnUiThread(new Runnable() 
       {
         public void run() { 
         data.setText(parsedText);
                            }    
        });
      }
  } 

在上面的代码中,我从String变量"parsedText"上的 html 页面中的 "p"(paragraph) 标记中获取数据行。

但是我TextView命名的“数据”在 for 循环内,我想String在我的TextView. 请帮我解决。

4

2 回答 2

2

您每次都设置文本而不是连接。String在循环中使用这样的方法也非常低效。相反,使用StringBuilder. 试试这个:

StringBuilder sb = new StringBuilder("");

for (Element eHead : eHeadder){
    if(eHead.tagName().equals("p"){
       sb.append(eHead.text());
       sb.append("\n");
       Log.d("testing5", ehead.text());
    } 
}

runOnUiThread(new Runnable(){
    public void run(){ 
        data.setText(sb.toString());                            }    
     });
}

这减少了String循环中创建的 s 的数量,减少了内存使用并提高了性能,并且也只设置了TextView一次文本。干净多了。

于 2013-09-07T15:15:21.883 回答
0

\n在每次解析后附加String您的拉动并将其附加到TextView.

 for (Element eHead : eHeadder) 
 {
 String tag = eHead.tagName();
 String addNextLine="";
   if(tag.equals("p")
    {
    final String parsedText = eHead.text();
     Log.d("testing5", parsedText);
     runOnUiThread(new Runnable() 
     {
      public void run() { 
       addNextLine = parsedText + "\n";
      data.setText(addNextLine);
                        }    
      });
   }
  } 
于 2013-09-07T15:10:58.047 回答