【问题标题】:Code returns only 1 json object to the listview代码仅向列表视图返回 1 个 json 对象
【发布时间】:2018-02-04 15:39:41
【问题描述】:

我的 jsonarray 中有 3 个对象,但是当我执行此代码时,列表视图中只添加了 1 个 jsonobject。我的代码正在运行,但它只返回 1 个 jsonobject。

这是我的代码:

String jsonString = s;
JSONArray array = new JSONArray(jsonString);

if (array != null && array.length() > 0) {

  //It will evalvate each json object.
  for (int i = 0; i < array.length(); i++) {
    if (array.get(i) instanceof JSONObject) {
      JSONObject receivedObject = array.optJSONObject(i);
      System.out.println("---Received Object---" + receivedObject);
      if (receivedObject != null) {
        //for userid fetch
        String userID = receivedObject.getString("userid");
        System.out.println("---User ID---" + userID);
      }
    } else if (array.get(i) instanceof JSONArray) {
      JSONArray innerArray = array.optJSONArray(i);
      for (int j = 0; j < innerArray.length(); j++) {
        JSONObject receivedObject = innerArray.getJSONObject(j);
        //     System.out.println("---Received Inner Array Object---"+receivedObject);
        if (receivedObject != null) {
          //for userid fetch

          String idnumber = receivedObject.getString("idclearance");
          // System.out.println("---User ID---"+userID);
          String firstname = receivedObject.getString("firstname");
          String lastname = receivedObject.getString("lastname");
          String datetime = receivedObject.getString("datetime");
          String purpose = receivedObject.getString("purpose");

          //   System.out.println(firstname + lastname + idnumber +datetime);

          if (documentlist.contains("Clearance Control #:" + idnumber + ", " + "Name:" + firstname + " " + lastname + ", " + "Purpose:" + purpose + ", " + "Date Requested:" + datetime + " -->" + "APPLICATION FORM")) {
            Toast.makeText(getApplicationContext(), "The information is already displayed", Toast.LENGTH_SHORT).show();

          } else {

            documentlist.add("Clearance Control #:" + idnumber + ", " + "Name:" + firstname + " " + lastname + ", " + "Purpose:" + purpose + ", " + "Date Requested:" + datetime + " -->" + "APPLICATION FORM");
            documentlist.remove("No document selected");


          }

        }

      }
    }
  }
}
}

arrayAdapter.notifyDataSetChanged();

【问题讨论】:

  • 不清楚,能否请您发布json响应。
  • [[{"idclearance":"2009","userid":"519","firstname":"Renz Francis","lastname":"Castaloni","datetime":"2018 -02-04","目的":"邮政 ID"}]][[{"idclearance":"2009","userid":"519","firstname":"Renz Francis","lastname":" Castaloni","datetime":"2018-02-04","目的":"邮政 ID"}],[{"idclearance":"2009","userid":"519","firstname":"Renz Francis","lastname":"Castaloni","datetime":"2018-02-04","目的":"邮政 ID"},{"idclearance":"2010","userid":"519", “名字”:“伦茨弗朗西斯”,“姓氏”:“Castaloni”,“日期时间”:“2018-02-04”,“目的”:“居住”}]]
  • 我想把所有的对象都返回给listview
  • 这个 json 不是一个有效的 JsonArray
  • 但它在我的列表视图中返回 1 个 json 对象

标签: java android json listview


【解决方案1】:

我认为 jsonArray 无效。它有不必要的方括号。请验证您的 json 字符串。这是您创建的还是从 API 调用中获取的?

【讨论】:

  • 我从 API 调用中得到这个
  • 循环在遇到“]”时停止。这就是为什么你要让循环只运行一次。
  • connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM clearrequest WHERE userid='$userid'"; $result = $conn->查询($sql); if ($result->num_rows > 0) { while($row[] = $result->fetch_assoc()) { $data[] = $row; $json = json_encode($data);回声 $json; } } else { echo "0 个结果"; } $conn->close(); ?>
  • 你能把所有必要的代码sn-ps包括你的android代码试图解析的json示例放在第一条消息中
猜你喜欢
  • 2018-05-30
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
相关资源
最近更新 更多