我是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()));
但它没有提供任何数据。 所以我的问题是如何打印所有行数据,而不仅仅是最后一行?
答案 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());