Android - Como consultar 2 array con Volley

 
Vista:
Imágen de perfil de Kathyu
Val: 57
Bronce
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como consultar 2 array con Volley

Publicado por Kathyu (23 intervenciones) el 29/03/2019 17:36:18
Hola buen día.

Tengo el siguiente problema: Quiero que en un solo onResponse pueda traer dos array que tengo en un archivo PHP que he creado en un server de pruebas.

Pero cuando quiero trabajar el segundo array me dice que esta vació y la App se traba y cierra.

Tengo esto:
1
2
3
4
5
6
// Funcion para consultar todas las Brigadas en server remoto
    private void descargarBrigadas(){
        String url = "https://www.simcrs.org.sv/OCHOA/apiRestOCHOA";
        jrq = new JsonObjectRequest(Request.Method.GET, url, null, this, this);
        rq.add(jrq);
    }

Esa dirección tiene 2 array juntos uno que llamo brigadas, 15 registros y el otro array que llamo turnos que básicamente tiene un registro por cada dia del año, ahorita tiene como 90

Luego tengo esto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@Override
    public void onResponse(JSONObject response) {
        // Objeto AdminSQLiteOpenHelper
        AdminSQLite adminsql = new AdminSQLite(getActivity(), "ochoa", null, 1);
        // Abrir Base en modo lectura/escritura
        SQLiteDatabase DBM = adminsql.getWritableDatabase();
        // Borramos todo lo de las tablas Brigadas y Turnos
        DBM.delete("brigada",null,null);
        DBM.delete("turno",null,null);
 
        //Creamos objeto de la clase Brigadas
        Brigadas brigadas = new Brigadas();
 
        // brigadas se llama mi array en el server
        JSONArray jsonArrayBrigadas = response.optJSONArray("brigadas");
        JSONObject jsonObjectBrigadas = null;
 
        // Resgistros del array
        int arrayBrigadasLenght = jsonArrayBrigadas.length();
 
        for (int i = 0; i < arrayBrigadasLenght; i++){
            try {
                jsonObjectBrigadas = jsonArrayBrigadas.getJSONObject(i);
                brigadas.setBrigada(jsonObjectBrigadas.optInt("brigada"));
                brigadas.setJefe(jsonObjectBrigadas.optString("jefe"));
            } catch (JSONException e) {
                e.printStackTrace();
            }
 
            // Variables para mostrar
            int brigada = brigadas.getBrigada();
            String jefe = brigadas.getJefe();
 
            // Toast.makeText(getActivity(),"Brigada: " + brigada + ", Jefe: " + jefe, Toast.LENGTH_SHORT).show();
 
            ContentValues registro = new ContentValues();
            registro.put("brigada", brigada);
            registro.put("jefe", jefe);
 
            DBM.insert("brigada", null, registro);
        }
        DBM.close();
    }

Ahí voy al server remoto, traigo el array y lo inserto en mi tabla, hasta ahí todo bien.

El problema inicio cuando quiero hacer lo mismo con el 2do array y me dice que el JSONArray jsonArrayTurnos = response.optJSONArray("turnos"); es null y se crashea la app
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
@Override
    public void onResponse(JSONObject response) {
        // Objeto AdminSQLiteOpenHelper
        AdminSQLite adminsql = new AdminSQLite(getActivity(), "ochoa", null, 1);
        // Abrir Base en modo lectura/escritura
        SQLiteDatabase DBM = adminsql.getWritableDatabase();
        // Borramos todo lo de las tablas Brigadas y Turnos
        DBM.delete("brigada",null,null);
        DBM.delete("turno",null,null);
 
        //Creamos objeto de la clase Brigadas
        Brigadas brigadas = new Brigadas();
 
        // brigadas se llama mi array en el server
        JSONArray jsonArrayBrigadas = response.optJSONArray("brigadas");
        JSONObject jsonObjectBrigadas = null;
 
        // Resgistros del array
        int arrayBrigadasLenght = jsonArrayBrigadas.length();
 
        for (int i = 0; i < arrayBrigadasLenght; i++){
            try {
                jsonObjectBrigadas = jsonArrayBrigadas.getJSONObject(i);
                brigadas.setBrigada(jsonObjectBrigadas.optInt("brigada"));
                brigadas.setJefe(jsonObjectBrigadas.optString("jefe"));
            } catch (JSONException e) {
                e.printStackTrace();
            }
 
            // Variables para mostrar
            int brigada = brigadas.getBrigada();
            String jefe = brigadas.getJefe();
 
            // Toast.makeText(getActivity(),"Brigada: " + brigada + ", Jefe: " + jefe, Toast.LENGTH_SHORT).show();
 
            ContentValues registro = new ContentValues();
            registro.put("brigada", brigada);
            registro.put("jefe", jefe);
 
            DBM.insert("brigada", null, registro);
        }
 
// Creamos objeto de la clase Turnos
        Turnos turnos = new Turnos();
 
        // turnos se llama mi array en el server
        JSONArray jsonArrayTurnos = response.optJSONArray("turnos");
        JSONObject jsonObjectTurnos = null;
        // Resgistros del array
        int arrayTurnosLenght = jsonArrayTurnos.length();
 
        for (int i = 0; i < arrayTurnosLenght; i++){
            try {
                jsonObjectTurnos = jsonArrayTurnos.getJSONObject(i);
                turnos.setFecha(jsonObjectTurnos.optString("fecha"));
                turnos.setBrigadaTurno(jsonObjectTurnos.optInt("brigada"));
            } catch (JSONException e) {
                e.printStackTrace();
            }
 
            // Variables para mostrar
            String fecha = turnos.getFecha();
            int brigadaTurno = turnos.getBrigadaTurno();
 
             Toast.makeText(getActivity(),"Brigada: " + brigadaTurno + ", Fecha: " + fecha, Toast.LENGTH_SHORT).show();
 
//            ContentValues registro = new ContentValues();
//            registro.put("fecha", fecha);
//            registro.put("brigada", brigadaTurno);
//
//            DBM.insert("turno", null, registro);
        }
        DBM.close();
    }

Busque info de como hacerlo y me tope con dos únicos sitios
Sitio 1, el cual adapte pero no pude traer ningun dato
Sitio 2, el que tiene casi que mi mismo problema pero no hubo solución. En este sitio le piden que haga un solo array pero no se si se aplica a mi pues yo tengo en un array 15 registros y en el otro muchisimos mas.

Les pido de favor su ayuda de como seria la mejor manera de poder descargar ambos arrays para poder continuar con mi proyecto.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kathyu
Val: 57
Bronce
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como consultar 2 array con Volley

Publicado por Kathyu (23 intervenciones) el 01/04/2019 23:54:29
Listo.

Se debe tratar el response como array y no como object para poder jugar con los array que vienen dentro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar