【问题标题】:android JSONException index out of rangeandroid JSONException 索引超出范围
【发布时间】:2019-04-16 14:28:20
【问题描述】:

我的数据库中有 3 条记录,但只有一条显示。不知道如何解决这个问题,我尝试了一切。帮助

public void onResponse(JSONArray response) {
    JSONObject jo;
    Teacher teacher;

    try {
        for (int i = 0; i < response.length(); i++) {
            JSONArray innerJsonArray = response.getJSONArray(i);
            jo = innerJsonArray.getJSONObject(i);

            int id = jo.getInt("id");
            String name = jo.getString("teacher_name");
            String description = jo.getString("teacher_description");
            String imageUrl = jo.getString("teacher_image_url");

            teacher = new Teacher(name, description, PHP_MYSQL_SITE_URL+imageUrl);
            teachers.add(teacher);
            te.setText(Integer.toString(response.length()));
        }
        //SET SPINNER
        adapter = new ListViewAdapter(c, teachers);
        gv.setAdapter(adapter);

【问题讨论】:

  • 错误表示您正在尝试访问超出数组大小范围的值,您可以发布完整的 logcat 错误吗?
  • 应该有 2 个 for 循环,一个用于 'JSONArray innerJsonArray = response.getJSONArray(i);'第二个是'JSONArray innerJsonArray = response.getJSONArray(j);'遍历innerJsonArray
  • 你能发布你试图解析的 JSON 吗?
  • 当我检查 responce.leght() 它告诉我它的 1。似乎我只得到 1 条记录,但是当我在网络上运行 php 时它给了我所有 3 个文件

标签: android json arraylist


【解决方案1】:

应该有 2 个 for 循环,一个用于 JSONArray innerJsonArray = response.getJSONArray(i);,第二个用于 JSONArray innerJsonArray = response.getJSONArray(j);,通过 innerJsonArray 进行迭代

public void onResponse(JSONArray response) {

        JSONObject jo;
        Teacher teacher;

        try {

        for (int i = 0; i < response.length(); i++) {
            JSONArray innerJsonArray = response.getJSONArray(i);
                for (int j = 0; j < innerJsonArray.length(); j++) {
                     jo = innerJsonArray.getJSONObject(j);
                     int id = jo.getInt("id");
                     String name = jo.getString("teacher_name");
                     String description = jo.getString("teacher_description");
                     String imageUrl = jo.getString("teacher_image_url");
                     teacher = new Teacher(name, description, PHP_MYSQL_SITE_URL + imageUrl);
                     teachers.add(teacher);
                     te.setText(Integer.toString(response.length()));
                }
               }
               //SET SPINNER
        adapter = new ListViewAdapter(c, teachers);
        gv.setAdapter(adapter);
        }
    }

【讨论】:

  • @Dadran 它奏效了,一整天都这样。谢谢 1000000000000
  • @noob 非常欢迎您:D 因为它有效,请点击勾选标记接受我的解决方案
  • 第一次对不起。我该怎么做??
猜你喜欢
  • 1970-01-01
  • 2015-02-01
  • 2011-11-25
  • 2019-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
相关资源
最近更新 更多