如何使用循环逐行打印文本视图?

时间:2013-09-07 14:45:39

标签: android string loops textview

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”(段落)标记中获取数据行。

但我的TextView名为“数据”位于for循环中,我希望在String中逐行打印TextView的每一行。请帮我解决一下。

2 个答案:

答案 0 :(得分: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的数量,减少了内存使用量并提高了性能,并且只设置了TextView一次文本。更干净。

答案 1 :(得分: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);
                        }    
      });
   }
  }