Autore Topic: ArrayList<String> e NullPointerException  (Letto 1932 volte)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
ArrayList<String> e NullPointerException
« il: 03 Maggio 2011, 14:19:20 CEST »
0
Scusate, forse sarà una cosa banale ma non ne vengo a capo....se io creo un ArrayList con questa linea di codice
Codice (Java): [Seleziona]
public List<String> verifica_array(){
  List<String> arraylist = new arrayList<Striong<();
  .....
  return arraylist;

se poi vado a fare in un altro metodo
Codice (Java): [Seleziona]
List<String> arraylist2 = new arrayList<Striong<();
arraylist2 = verifica_array();
if(arraylist2.isEmpty()) ...
...

sull'if mi dà errore quando arraylist2 è null ma come devo fare ad evitare questo errore??  >:(

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:ArrayList<String> e NullPointerException
« Risposta #1 il: 03 Maggio 2011, 14:46:52 CEST »
+1
if (arraylist2 == null) //gestisci il null
else if (arraylist2.isEmpty()) //gestisci l'empty
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 mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ArrayList<String> e NullPointerException
« Risposta #2 il: 03 Maggio 2011, 14:53:43 CEST »
0
SI avevo provato perchè il problema non è che non fa il confronto ma è che arralist2 è null e quindi va in NullPointerException e termina l'applicazione....ci vorrebbe un modo per inizializzare arraylist2 quando viene creato in modo da dargli un valore quando viene creato...

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:ArrayList<String> e NullPointerException
« Risposta #3 il: 03 Maggio 2011, 14:56:43 CEST »
0
c'è qualcosa che non mi quadra.
Potresti postare il logcat dell'errore?
Così com'è non dovrebbe dare problemi.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ArrayList<String> e NullPointerException
« Risposta #4 il: 03 Maggio 2011, 14:58:13 CEST »
0
No! aveva ragione Nicola era quello !!! perchè nell'if mettevo is empty oppure equals("null") invece dovevo mettere semplicemente == null ! Bravo Nicola, Ti meriti un bel rep+!! ;)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:ArrayList<String> e NullPointerException
« Risposta #5 il: 05 Maggio 2011, 10:00:16 CEST »
0
va bene che hai risolto, ma per come è scritto il codice, la tua list non dovrebbe mai essere null......
al più può essere vuota.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

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:ArrayList<String> e NullPointerException
« Risposta #6 il: 05 Maggio 2011, 10:35:32 CEST »
0
va bene che hai risolto, ma per come è scritto il codice, la tua list non dovrebbe mai essere null......
al più può essere vuota.
si ma te non sai cosa c'è nei .... :D
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 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:ArrayList<String> e NullPointerException
« Risposta #7 il: 05 Maggio 2011, 12:27:39 CEST »
0
concordo, Nicola.
Ma è pure vero che a quel punto no ha senso allocarla ad inizio metodo, se poi la devo porre a null.
A quanto pare c'è qualcosa che la mette a null, ma è alquanto strano che ci sia.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ArrayList<String> e NullPointerException
« Risposta #8 il: 05 Maggio 2011, 13:59:37 CEST »
0
No ragazzi praticamente c'è un metodo che preleva i dati dal web, all'inizio di questo metodo creo l'arraylist e poi se i dati vengono prelevati li metto dentro e ritorno l'arraylist però potrebbe accadere che per problemi di connessione non riesce a prelevarili ed in quel caso ritorna null onestamente non sò come mai si null infatti io utilizzavo isEmpty ma non andava....eppure dopo l'inizializzazione l'arraylist non viene più toccato

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:ArrayList<String> e NullPointerException
« Risposta #9 il: 05 Maggio 2011, 14:12:33 CEST »
0
No ragazzi praticamente c'è un metodo che preleva i dati dal web, all'inizio di questo metodo creo l'arraylist e poi se i dati vengono prelevati li metto dentro e ritorno l'arraylist però potrebbe accadere che per problemi di connessione non riesce a prelevarili ed in quel caso ritorna null onestamente non sò come mai si null infatti io utilizzavo isEmpty ma non andava....eppure dopo l'inizializzazione l'arraylist non viene più toccato

a sto punto non ti serve neanche inizializzarlo, lasci l'if null or empty e basta!
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 mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ArrayList<String> e NullPointerException
« Risposta #10 il: 05 Maggio 2011, 15:06:04 CEST »
0
Che poi se io gli metto nomearraylist.isEmpty() mi da un NullPointerException e mi va in errore l'applicazione pur avendolo inizializzato vuole per forza nomearraylist==null

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:ArrayList<String> e NullPointerException
« Risposta #11 il: 05 Maggio 2011, 15:07:20 CEST »
0
si, infatti, in quei famosi ... del tuo codice, da qualche parti c'è la possibiletà di assegnare null al tuo array, per cquesto mi suona strano.
In teoria nell'array dovresti scriverci solo se hai i dati, altrimenti non lo tocchi: in questo caso, solo il metodo isEmpty() va bene.

Per curiosità, posti il codice?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ArrayList<String> e NullPointerException
« Risposta #12 il: 05 Maggio 2011, 15:30:24 CEST »
0
Certo che lo posto,nnon è un segreto :)

Codice (Java): [Seleziona]
//Preleva i prezzi dei prodotti per categoria
private List<String> preleva_prezzi() {
        List<String> prezzi = new ArrayList<String>();
        //Lettura prezzi da web
        try {
                HtmlParser hp = new HtmlParser("http://www.sitoweb.it");
                prezzi = hp.parser_prezzi("td");
                return prezzi;
         } catch (Exception e) {
                    Log.e("Error", e.toString());
          }
        return prezzi;
      }

come potete vedere dal codice sopra prezzi può tornare empty perchè magari la connessione non va mentre se la connessione va allora richiama questo codice

Codice (Java): [Seleziona]
public List<String> parser_prezzi(String elementName)
    {
        StringBuffer sb = new StringBuffer();
        List<String> prezzi = new ArrayList<String>();
        int i = 0;
        try
        {  
            List<TagNode> elementi = rootNode.getElementListHavingAttribute("width", true);
           for (Iterator<TagNode> iterator = elementi.iterator(); iterator.hasNext();){
                TagNode Element = (TagNode) iterator.next();
               if(Element.getText().toString().contains("&euro;")) {
                        String prezzo = Element.getText().toString().replace(" ", "").replace("&nbsp;", " ").replace("&euro;", "€").replace("\n", "").replace("\r", "");
                        prezzi.add(prezzo);
                        i++;
               }                
            }
            return prezzi;
        }

che non può mai essere empty perchè comunque il dato nelle pagine c'è e me lo resituisce....e poi richiamo da un'altra funzione :
Codice (Java): [Seleziona]
List<String> array_prezzi = new ArrayList<String>();
array_prezzi  = preleva_prezzi();

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:ArrayList<String> e NullPointerException
« Risposta #13 il: 05 Maggio 2011, 15:35:40 CEST »
0
forse non centra, in ogni caso usa così l'iterator:
Codice (Java): [Seleziona]
Iterator<TagNode> iterator = elementi.iterator();
while(iterator.hasNext()){
...
}

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ArrayList<String> e NullPointerException
« Risposta #14 il: 05 Maggio 2011, 15:39:47 CEST »
0
forse non centra, in ogni caso usa così l'iterator:
Codice (Java): [Seleziona]
Iterator<TagNode> iterator = elementi.iterator();
while(iterator.hasNext()){
...
}

Fatto non cambia nulla ma sicuramente più pulito come codice, thanks;)