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

时间:2015-05-26 14:38:40

标签: java android 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()));

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

5 个答案:

答案 0 :(得分:0)

使用append

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

当您执行etResponse.setText("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());

答案 3 :(得分:0)

代码的问题在于,每次循环执行时覆盖当前文本。因此,不是在循环的每次迭代中设置文本(由于GUI经常更新而有些低效),您可以将文本存储在String变量中,在循环之后,您可以使用{{更新GUI 1}}。

setText()

答案 4 :(得分:0)

将您的代码转换为此代码:

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());