Autore Topic: Errore parsing data su list  (Letto 1451 volte)

Offline Fixxxer393

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Windows 10
Errore parsing data su list
« il: 03 Novembre 2013, 11:44:40 CET »
0
Salve, ho un problema su una lista dove vengono caricati i dati che stanno su un database remoto. Il problema sta quando sulla lista non c'è nulla da caricare...

Codice (Java): [Seleziona]
try {
                                //TODO
                                List list = new LinkedList();
                                JSONArray jArray = new JSONArray(result);      
                                for (int i = 0; i < jArray.length(); i++) {
                                        JSONObject json_data = jArray.getJSONObject(i);
                                  list.add(..qui c è quello che deve caricare..);     
                                }
                                // Creazione del Custom Adapter
                                CustomAdapter adapter = new CustomAdapter(this,
                                                R.layout.appoggio, list);
                                listView.setAdapter(adapter);
                        } catch (JSONException e) {
                                Log.e("log_tag", "Error parsing data " + e.toString());
                        }

L'errore del Log è:


Error parsing data org.json.JSONexception: Value <br of type java.lang.String cannot be converted to JSONArray


Sapete dirmi come posso rimediare?

Grazie ;)

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Errore parsing data su list
« Risposta #1 il: 03 Novembre 2013, 11:53:15 CET »
0
Stai cercando di leggere una stringa HTML in json! Result non è un json!

Inviato dal mio Nexus 4 utilizzando Tapatalk

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Fixxxer393

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Windows 10
Re:Errore parsing data su list
« Risposta #2 il: 03 Novembre 2013, 12:27:33 CET »
0
Quindi come posso risolvere?  Questo errore me lo da solo se non ha niente da mettere sulla list altrimenti funziona bene...

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Errore parsing data su list
« Risposta #3 il: 03 Novembre 2013, 17:54:28 CET »
0
Hai già un try catch,gestisci come meglio credi la lista vuota! Si vede che il server se non ci sono oggetti non restituisce un json

Inviato dal mio Nexus 4 utilizzando Tapatalk

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Fixxxer393

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Windows 10
Re:Errore parsing data su list
« Risposta #4 il: 03 Novembre 2013, 19:49:06 CET »
0
Sai consigliarmi qualche metodo per gestire la lista?

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Errore parsing data su list
« Risposta #5 il: 03 Novembre 2013, 20:46:27 CET »
0
basta che la lasci vuota.... ci sono vari tutorial sul forum sul parsing json e gestione listview
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Fixxxer393

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Windows 10
Re:Errore parsing data su list
« Risposta #6 il: 03 Novembre 2013, 23:19:24 CET »
0
Ti spiego meglio il mio problema, prima forse l'ho scritto troppo in generale.
Io ho implementato all'evento onClick della list una richiesta al server che mi cambia il valore di un certo elemento esempio: "stato" da 0 a 1.
Premetto che ho un timer che mi riaggiorna gli elementi della list.
La mia list deve mi fa vedere gli elementi con stato = 0, quando premo su l'ultimo elemento della lista (quando ne rimane uno insomma) mi rimane in vista (cioè come se non si riaggiornasse) ancora l'ultimo elemento, anche se il valore nel DB è cambiato a 1 e mi da l'errore sul LogCat che ho scritto sopra....

Penso di essere stato chiaro ora... ;)


Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Errore parsing data su list
« Risposta #7 il: 04 Novembre 2013, 10:16:43 CET »
0
a dire la verità no... non ci ho capito nulla.... il codice che hai postato non ha nulla a che fare con un db, e dall'errore che si vedeva (JSON exception su stringa che inizia con "<br") l'errore sembra venire da una chiamata web.
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Fixxxer393

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Windows 10
Re:Errore parsing data su list
« Risposta #8 il: 04 Novembre 2013, 11:53:08 CET »
0
a dire la verità no... non ci ho capito nulla.... il codice che hai postato non ha nulla a che fare con un db, e dall'errore che si vedeva (JSON exception su stringa che inizia con "<br") l'errore sembra venire da una chiamata web.

Ora ti posto il codice dell'evento onClick

Codice (Java): [Seleziona]
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                        long arg3) {
       
                                int cod = app_cod[(int) arg3];
                               
                                try {
                                       
                                        HttpClient httpclient = new DefaultHttpClient();
                                        HttpPost httppost = new HttpPost(
                                                        "http://10.0.2.2/QUERY.php?codice=" + cod);
                                        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                                        HttpResponse response = httpclient.execute(httppost);
                                        HttpEntity entity = response.getEntity();
                                       
                                } catch (Exception e) {
                                        Log.e("TEST", "Errore nella connessione http " + e.toString());
                                }
                                Toast.makeText(getApplicationContext(), "**** Spostato ***", Toast.LENGTH_SHORT).show();
                                }
                };

PS: l'errore sul log è lo stesso sia per quando non deve caricare nulla nella list, sia per quando non mi cancella l'ultimo elemento della lista.
« Ultima modifica: 04 Novembre 2013, 11:54:42 CET da Fixxxer393 »

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Errore parsing data su list
« Risposta #9 il: 04 Novembre 2013, 12:28:48 CET »
+1
Scusami ma non è chiaro quello che stai chiedendo.

Hai un item su una lista, su cui esegui il click.
Il click lancia una chiamata http per recuperare alcuni elementi remoti.

Questa chiamata va in errore (perchè non è un json....).
Fin qui ok.
Ora non mi è chiaro tutto il resto sulla list.

Nel tuo codice non c'è nulla che aggiorna la lista quando va in eccezione la chiamata http.

Offline Fixxxer393

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Windows 10
Re:Errore parsing data su list
« Risposta #10 il: 04 Novembre 2013, 12:56:33 CET »
0
Scusami ma non è chiaro quello che stai chiedendo.

Hai un item su una lista, su cui esegui il click.
Il click lancia una chiamata http per recuperare alcuni elementi remoti.

Questa chiamata va in errore (perchè non è un json....).
Fin qui ok.
Ora non mi è chiaro tutto il resto sulla list.

Nel tuo codice non c'è nulla che aggiorna la lista quando va in eccezione la chiamata http.

Se ricordi il post che avevo fatto un po di tempo fa riguardo il Timer è quello che mi aggiorna la lista con i dati del DB.

Supponiamo che io nella mio database ho

  • Elemento   -    Stato
  • Elemento1   -    0
  • Elemento2   -    0
  • Elemento3   -    0

La mia lista sarà composta da:
  • Elemento1
  • Elemento2
  • Elemento3

Se io clicco ad esempio in sequenza Elemento3,Elemento2 poi Elemento1.

Elemento3 ed Elemento2 mi vengono rimossi dalla lista (perchè ho il timer che mi ricarica gli elementi della lista con stato = 0) ma mi rimane in lista Elemento3
anche se nel database i dati sono cambiati così:


  • Elemento   -    Stato
  • Elemento1   -    1
  • Elemento2   -    1
  • Elemento3   -    1

E mi da l'errore che ho scritto al primo post.

Se ancora non è chiaro ditemelo che vi spiego =)

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Errore parsing data su list
« Risposta #11 il: 04 Novembre 2013, 13:59:47 CET »
+1
ma lato server, se tutti gli elementi sono a 1, che Stringa ti restituisce?
Prova a fare il test da browser o con un REST Client
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Errore parsing data su list
« Risposta #12 il: 04 Novembre 2013, 14:35:07 CET »
+1
Probabilmente a causa dell'eccezione la lista non viene proprio aggiornata e rimane nell'ultimo stato valido.

Se sistemi il problema dell'eccezione, cioè se fai in modo che il codice gestisca anche risposte senza nessun elemento, secondo me si sistema anche la lista.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Fixxxer393

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Windows 10
Re:Errore parsing data su list
« Risposta #13 il: 04 Novembre 2013, 14:36:36 CET »
0
Probabilmente a causa dell'eccezione la lista non viene proprio aggiornata e rimane nell'ultimo stato valido.

Se sistemi il problema dell'eccezione, cioè se fai in modo che il codice gestisca anche risposte senza nessun elemento, secondo me si sistema anche la lista.

Hai qualche idea su come fare? xD

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Errore parsing data su list
« Risposta #14 il: 04 Novembre 2013, 15:54:14 CET »
0
Hai qualche idea su come fare?

Mettiti nel caso in cui si verifica l'eccezione e falla accadere. A quel punto analizza il LogCat (o postalo tutto se ti serve una mano). Dal LogCat vedi quale riga genera l'eccezione e perchè, a quel punto non resta che evitare che si verifichi, per esempio prevedendo con quale "if" un controllo di quanto è stato risposto dal server.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store