繁体   English   中英

使用for循环在Android中打印新行

[英]Printing new line in Android with for loop

我是android开发的新手,但我有一些Java背景。 在Java中,当使用循环时,我使用了System.out.println(); 但是在Android中,循环结束后,我只会得到最后的结果。 我正在使用包含10行的JSON数据。

这是我的代码:

json = new JSONObject(result);
JSONArray articles = json.getJSONArray("entries"); // get articles array                

for(int i = 0; i <articles.length(); i++) {
    etResponse.setText(articles.getJSONObject(i).toString());
}

etResponse是我的EditText ,仅显示最后一行。

我也尝试过:

builder.append(String.valueOf(articles.getJSONObject(i).toString()));

但是它没有任何数据。 所以我的问题是如何打印所有行数据,而不仅仅是最后一个?

使用附加

 for (int i = 0; i < articles.length();i++) {
   etResponse.append(... + "\n");
 }

如何使用StringBuilder生成字符串,然后在for循环外将值设置为etResponse呢?

当您执行etResponse.setText("new text")etResponse.setText("new text")先前的值替换为“ new text”。

解决方法是将值保存在StringBuilder并在准备好后将其设置为EditText

StringBuilder sb = new StringBuilder();
for(int i = 0;i <articles.length();i++) {
         long id = articles.getJSONObject(i).getLong("id");
         String name = articles.getJSONObject(i).getString("name");
         sb.append(id).append(" -> ").append(name).append("\n);
}

etResponse.setText(sb.toString());

代码的问题在于,每次循环执行时,都会覆盖当前文本。 因此,您可以将文本存储在String变量中,然后在循环后使用setText()更新GUI,而不是在循环的每次迭代中设置文本(效率低下,因为GUI经常更新setText()

String result = "";

for(int i = 0;i <articles.length();i++){
     result += articles.getJSONObject(i).toString() + "\n";
}

etResponse.setText(result);

将您的代码转换为此:

json = new JSONObject(result);
JSONArray articles = json.getJSONArray("entries"); // get articles array                
StringBuilder wholeText = new StringBuilder();
for(int i = 0;i <articles.length();i++){
   wholeText.append(articles.getJSONObject(i).toString() + "\n");
}
etResponse.setText(wholeText.toString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM