【问题标题】:For Loop to iterate over JSON objects inside an ArrayFor Loop 遍历数组中的 JSON 对象
【发布时间】:2016-01-21 13:22:37
【问题描述】:

我如何 get and show 每个 JSON's Object's value 里面的 Array 称为 learning

JSON 数组如下所示:

"learning": [
 {
  "code":"2K14 - 2",
  "os":"Windows - 2"
 },
 {
  "code":"2K15 - 2",
  "os":"Linux - 2"
 },
 {
  "code":"2K16 - 2",
  "os":"Mac - 2"
 }
]

代码

List<Learning> learning = value.getLearning();
for(Learning m : learning) {
     // I guess, here I am missing something, which is really useful
     String code = m.getCode();
     String os = m.getOs();
     viewHolder.learning.setText("Code: "+code+" OS: "+os);
}

当我execute 我的程序时,getting 这个:

Code: 2k16, OS: Mac - 2

而我want to get 类似this

Code: 2k14 OS: Windows - 2,  Code: 2k15 OS: Linux - 2, Code: 2k16 OS: Mac - 2

【问题讨论】:

  • 你是如何解析 json 的?
  • viewholder,我假设您在列表适配器中使用 Viewholder 模式。不需要循环。 GetView 运行多次以呈现列表项。它应该根据位置显示一个项目。查看getItem(position)
  • 使用改造@Blackbelt
  • viewHolder.learning.setText("Code: "+code+" OS: "+os); 正在替换文本。你需要类似于viewHolder.learning.setText( viewHolder.learning.getText() + "Code: "+code+" OS: "+os);viewHolder.learning.appendText(" Code: "+code+" OS: "+os); 的东西。不确定您可以使用哪些方法,但这就是问题所在...

标签: java android json for-loop retrofit


【解决方案1】:

如果想在单个TextView 中显示所有数据,请这样做:

viewHolder.learning.append("Code: "+code+" OS: "+os + ", ");

使用TextView.append 代替TextView.setText

【讨论】:

  • 感谢 append() 为我工作,我将您的答案勾选为有用,并将在 7 分钟内接受,我可以知道如何在对象之间显示逗号,如上所示
【解决方案2】:

您能否发布您的 Retrofit 接口以及与之相关的所有模型类?

然后你就会有这样的东西来阅读它。

String text = "";
List<Learning> learning = value.getLearning();
for(Learning m : learning) {
     // I guess, here I am missing something, which is really useful
     String code = m.getCode();
     String os = m.getOs();
     text = text + "Code: " + code + " OS: " + os + ", ";
}
viewHolder.learning.setText(text);

【讨论】:

【解决方案3】:
JSONArray jsonArray = jsonObj.getJSONArray("learning");

for(int i = 0; i < jsonArray.length(); i++)
{
    JSONObject obj  = jsonArray.getJSONObject(i);
    String code = obj.getString("code");
    String os = obj.getString("os");

    Log.i("MyClass", "Code -> " + code);
    Log.i("MyClass", OS -> " + os);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多