【问题标题】:When i want add a object from request json in an ArrayList当我想从 ArrayList 中的请求 json 添加一个对象时
【发布时间】:2016-04-22 05:08:53
【问题描述】:

好吧,我通过 url 查询一个 JSON 对象,我得到该对象并将其添加到一个字符串中,好吧,问题是当我将它添加到 ArrayList 时,这一行被跳过并且在我们添加时不执行,有人知道为什么吗?

public void consult(String val_user){

    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
            "http://"+ippref+":8080/Activo/webresources/activo.entities.historialactivos/consulta/"+val_user+"", new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {

            String item = "";
            for (int i = 0; i < response.length(); i++) {
                try {

                    JSONObject obj = response.getJSONObject(i);

                    item += "Actividad: " + obj.getString("actividad") + "\r\n";
                    item += "Activo NS: " + obj.getString("activo") + "\r\n";
                    item += "Fecha: " + obj.getString("fecha") + "\r\n";
                    item += "Id Activo: " + obj.getString("idActivo") + "\r\n";
                    item += "Id Historial: " + obj.getString("idHistorialActivo") + "\r\n";
                    item += "Id Incidencia: " + obj.getString("idIncidencia") + "\r\n";
                    item += "Id Usuario: " + obj.getString("idUsuario") + "\r\n";
                    item += "Incidencia: " + obj.getString("incidencia") + "\r\n";
                    item += "Observaciones: " + obj.getString("observaciones") + "\r\n";
                    item += "Oficina: " + obj.getString("oficina") + "\r\n";
                    item += "Tipo de movimiento: " + obj.getString("tipoMovimiento") + "\r\n";
                    item += "Usuario: " + obj.getString("usuario" + "\r\n");

                    array.add(item);

                    item = "";


                } catch (JSONException ex) {
                    ex.printStackTrace();
                }
                metodo_adapter();
                adapter.notifyDataSetChanged();

            }
        }

    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
    AppController.getInstance().addToRequestQueue(jsonArrayRequest);
}

array.add(item) 中,当我执行调试时跳过这行代码。

【问题讨论】:

    标签: java android android-activity android-studio arraylist


    【解决方案1】:
    array.add(item);
    item = ""; // This line is causing issue.
    

    不要像这样让你的项目字符串为空,因为字符串是一个基于引用的变量,如果你这样做,你最终会在你的数组中存储“”。

    最好在 try 块中定义您的 String item = "";

    【讨论】:

    • 我删除了那行但还是同样的错误,行array.add(item) 执行点失败,不要添加
    • 我期待它以这种方式工作。请问您是如何声明和启动“数组”的?
    • 私有列表 arrayactivos = new ArrayList();
    【解决方案2】:

    唯一的问题是因为你放了

    String item = "";
    

    在for循环之外,这意味着所有数组列表都查找单个对象,意味着只有最后一个会有数据

    解决方案必须这样做

         for (int i = 0; i < response.length(); i++) {
                    try {
    String item = "";
                        JSONObject obj = response.getJSONObject(i);
    
                        item += "Actividad: " + obj.getString("actividad") + "\r\n";
                        item += "Activo NS: " + obj.getString("activo") + "\r\n";
                        item += "Fecha: " + obj.getString("fecha") + "\r\n";
                        item += "Id Activo: " + obj.getString("idActivo") + "\r\n";
                        item += "Id Historial: " + obj.getString("idHistorialActivo") + "\r\n";
                        item += "Id Incidencia: " + obj.getString("idIncidencia") + "\r\n";
                        item += "Id Usuario: " + obj.getString("idUsuario") + "\r\n";
                        item += "Incidencia: " + obj.getString("incidencia") + "\r\n";
                        item += "Observaciones: " + obj.getString("observaciones") + "\r\n";
                        item += "Oficina: " + obj.getString("oficina") + "\r\n";
                        item += "Tipo de movimiento: " + obj.getString("tipoMovimiento") + "\r\n";
                        item += "Usuario: " + obj.getString("usuario" + "\r\n");
    
                        array.add(item);
    
                        item = "";
    
    
                    } catch (JSONException ex) {
                        ex.printStackTrace();
                    }
                    metodo_adapter();
                    adapter.notifyDataSetChanged();
    
                }
    

    会解决你的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多