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
的每一行。请帮我解决一下。
答案 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);
}
});
}
}