Autore Topic: java.lang.NullPointerException in AsyncTask  (Letto 663 volte)

Offline enzoses

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X
java.lang.NullPointerException in AsyncTask
« il: 25 Aprile 2013, 11:46:05 CEST »
0
Ciao a tutti! Sto cercando di rendere più efficiente il codice della mia app. Quello che fa è leggere da un xml in locale e costruire una custom list view. L'ho già fatto con un'altra app e funziona bene, allora ho pensato di usare quel codice in questa e adattarlo: risultato, appena lancio quell'activity ho l'errore java.lang.NullPointerException.
Dove sbaglio?

Vi allego il codice che ho usato e l'errore specifico

Codice (Java): [Seleziona]
package it.vscreazioni.farmachimica;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ListView;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class MostraTutti extends SherlockActivity {
        final ListView lv = (ListView) findViewById(R.id.listView);
        final List<ListViewItem> items = new ArrayList<MostraTutti.ListViewItem>();
        final ArrayList<String> nome = new ArrayList<String>();
        final ArrayList<String> immagine = new ArrayList<String>();
        ...
        ...
       
        final   int array_image2[] ={R.drawable.iodocloroidrossichinolina,R.drawable.acidoacetilsalicilico,
                        R.drawable.acidoascorbico,R.drawable.acidobarbiturico,R.drawable.acidobenzoico,...};

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                 
                setContentView(R.layout.mostra_tutti);
                getSupportActionBar().setDisplayShowHomeEnabled(false);
               
                RssFeedTask rssTask = new RssFeedTask();
               rssTask.execute();            
        }
       
        private class RssFeedTask extends AsyncTask<String, Void, String> {
                private ProgressDialog Dialog;
                String response = "";
               
                @Override
                protected void onPreExecute() {
                        Dialog = new ProgressDialog(MostraTutti.this);
                        Dialog.setMessage("Leggo...");
                        Dialog.show();
                }
               
                        @Override
                        protected String doInBackground(String... urls) {
                                InputStream xmlFile = getResources().openRawResource(R.raw.sostanze);
                                try {
                               
                                DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
                                DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
                                final Document document = documentBuilder.parse(xmlFile);
                                document.getDocumentElement().normalize();
                                NodeList nodeList = document.getElementsByTagName("sostanza");
                               
                                for (int i = 0; i < nodeList.getLength(); i++) {
                                final int       indice = i;

                                nome.add(document.getElementsByTagName("nome").item(indice).getTextContent());
                                iupac.add(document.getElementsByTagName("iupac").item(indice).getTextContent());
                                aspetto.add(document.getElementsByTagName("aspetto").item(indice).getTextContent());
                                formula.add(document.getElementsByTagName("formula").item(indice).getTextContent());
                                immagine.add(document.getElementsByTagName("immagine").item(indice).getTextContent());
                                appartenenza.add(document.getElementsByTagName("appartenenza").item(indice).getTextContent());
                                spiegazione.add(document.getElementsByTagName("spiegazione").item(indice).getTextContent());
                                tempFus.add(document.getElementsByTagName("temperaturaFusione").item(indice).getTextContent());
                                tempEboll.add(document.getElementsByTagName("temperaturaEbollizione").item(indice).getTextContent());
                                solubilita.add(document.getElementsByTagName("solubilita").item(indice).getTextContent());
                                note.add(document.getElementsByTagName("eccezioni").item(indice).getTextContent());
                               
                                String str = document.getElementsByTagName("formula").item(indice).getTextContent();
                                 
                                str = str.replaceAll("0", "\u2080");
                            str = str.replaceAll("1", "\u2081");
                            str = str.replaceAll("2", "\u2082");
                            str = str.replaceAll("3", "\u2083");
                            str = str.replaceAll("4", "\u2084");
                            str = str.replaceAll("5", "\u2085");
                            str = str.replaceAll("6", "\u2086");
                            str = str.replaceAll("7", "\u2087");
                            str = str.replaceAll("8", "\u2088");
                            str = str.replaceAll("9", "\u2089");
                           
                            final String stringa = str;
                                formulaConvertita.add(stringa);
                               
                                        items.add(new ListViewItem()
                                        {{
                                                ThumbnailResource = array_image2[indice];
                                                Title = document.getElementsByTagName("nome").item(indice).getTextContent();
                                                SubTitle = stringa;
                                        }});
                    };
                               
                        } catch (IOException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        } catch (ParserConfigurationException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (SAXException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }      
                                       
                        return response;
        }
                    @Override
                        protected void onPostExecute(String result) {
                        CustomListViewAdapter adapter = new CustomListViewAdapter(MostraTutti.this,items);
                                lv.setAdapter(adapter);
                        /*
                        _adapter = new CustomListViewAdapter(News.this,Rssparser.items);
                        lv=(ListView)findViewById(R.id.list);
                        lv.setAdapter(_adapter);
                                Dialog.dismiss();
                                lv.setOnItemClickListener(new OnItemClickListener()
                                {
                                        public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
                                        {                      
                                                Context context = getBaseContext();
                                       Intent myIntent = new Intent(context, LeggiArticolo.class);
                                     
                                       myIntent.putExtra("testo",Rssparser.testo.get(position));
                                       myIntent.putExtra("titolo",Rssparser.titolo.get(position));
                                       myIntent.putExtra("immagine",Rssparser.immagini.get(position));
                                       myIntent.putExtra("link",Rssparser.indirizzo.get(position));

                                       startActivityForResult(myIntent, 0);
                                        }
                                 }
                             );
                             */

                        }
                        }
       
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getSupportMenuInflater().inflate(R.menu.activity_main, menu);
                return true;
        }
       
 class ListViewItem {
        public int ThumbnailResource;
        public String Title;
        public String SubTitle;
  }
}

e ricevo questo errore

Codice (Java): [Seleziona]
04-25 11:43:57.872: W/dalvikvm(1663): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
04-25 11:43:57.902: E/AndroidRuntime(1663): FATAL EXCEPTION: main
04-25 11:43:57.902: E/AndroidRuntime(1663): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{it.vscreazioni.farmachimica/it.vscreazioni.farmachimica.MostraTutti}: java.lang.NullPointerException
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.os.Looper.loop(Looper.java:137)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.app.ActivityThread.main(ActivityThread.java:4745)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at java.lang.reflect.Method.invokeNative(Native Method)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at java.lang.reflect.Method.invoke(Method.java:511)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at dalvik.system.NativeStart.main(Native Method)
04-25 11:43:57.902: E/AndroidRuntime(1663): Caused by: java.lang.NullPointerException
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.app.Activity.findViewById(Activity.java:1825)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at it.vscreazioni.farmachimica.MostraTutti.<init>(MostraTutti.java:25)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at java.lang.Class.newInstanceImpl(Native Method)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at java.lang.Class.newInstance(Class.java:1319)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
04-25 11:43:57.902: E/AndroidRuntime(1663):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
04-25 11:43:57.902: E/AndroidRuntime(1663):     ... 11 more

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:java.lang.NullPointerException in AsyncTask
« Risposta #1 il: 25 Aprile 2013, 12:20:30 CEST »
0
Leggi il logcat:
Codice: [Seleziona]
04-25 11:43:57.902: E/AndroidRuntime(1663):     at it.vscreazioni.farmachimica.MostraTutti.<init>(MostraTutti.java:25)Cosa c'é alla riga 25?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline enzoses

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X
Re:java.lang.NullPointerException in AsyncTask
« Risposta #2 il: 25 Aprile 2013, 12:32:26 CEST »
0
maledetta --> final ListView lv = (ListView) findViewById(R.id.listView); !!!!

Ho cambiato il tutto così:

Codice (Java): [Seleziona]
package it.vscreazioni.farmachimica;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class MostraTutti extends SherlockActivity {
        ListView lv;
        final List<ListViewItem> items = new ArrayList<MostraTutti.ListViewItem>();
        final ArrayList<String> nome = new ArrayList<String>();
        ...
       
        final   int array_image2[] ={R.drawable.iodocloroidrossichinolina,R.drawable.acidoacetilsalicilico,
                        R.drawable.acidoascorbico,R.drawable.acidobarbiturico,R.drawable.acidobenzoico,
                        ... };

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                                 
                setContentView(R.layout.mostra_tutti);
                lv = (ListView) findViewById(R.id.listView);
                getSupportActionBar().setDisplayShowHomeEnabled(false);

                RssFeedTask rssTask = new RssFeedTask();
               rssTask.execute();
                     
        }
       
        private class RssFeedTask extends AsyncTask<String, Void, String> {
                private ProgressDialog Dialog;
                String response = "";
               
                @Override
                protected void onPreExecute() {
                        Dialog = new ProgressDialog(MostraTutti.this);
                        Dialog.setMessage("Leggo le sostanze...");
                        Dialog.show();
                }
               
                        @Override
                        protected String doInBackground(String... urls) {
                                InputStream xmlFile = getResources().openRawResource(R.raw.sostanze);
                                try {
                               
                                DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
                                DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
                                final Document document = documentBuilder.parse(xmlFile);
                                document.getDocumentElement().normalize();
                                //tagHandler.handleChannelTag(document);
                                NodeList nodeList = document.getElementsByTagName("sostanza");
                               
                                for (int i = 0; i < nodeList.getLength(); i++) {
                                final int       indice = i;

                                nome.add(document.getElementsByTagName("nome").item(indice).getTextContent());
                                iupac.add(document.getElementsByTagName("iupac").item(indice).getTextContent());
                                aspetto.add(document.getElementsByTagName("aspetto").item(indice).getTextContent());
                                formula.add(document.getElementsByTagName("formula").item(indice).getTextContent());
                                immagine.add(document.getElementsByTagName("immagine").item(indice).getTextContent());
                                appartenenza.add(document.getElementsByTagName("appartenenza").item(indice).getTextContent());
                                spiegazione.add(document.getElementsByTagName("spiegazione").item(indice).getTextContent());
                                tempFus.add(document.getElementsByTagName("temperaturaFusione").item(indice).getTextContent());
                                tempEboll.add(document.getElementsByTagName("temperaturaEbollizione").item(indice).getTextContent());
                                solubilita.add(document.getElementsByTagName("solubilita").item(indice).getTextContent());
                                note.add(document.getElementsByTagName("eccezioni").item(indice).getTextContent());
                               
                                String str = document.getElementsByTagName("formula").item(indice).getTextContent();
                                 
                                str = str.replaceAll("0", "\u2080");
                            str = str.replaceAll("1", "\u2081");
                            str = str.replaceAll("2", "\u2082");
                            str = str.replaceAll("3", "\u2083");
                            str = str.replaceAll("4", "\u2084");
                            str = str.replaceAll("5", "\u2085");
                            str = str.replaceAll("6", "\u2086");
                            str = str.replaceAll("7", "\u2087");
                            str = str.replaceAll("8", "\u2088");
                            str = str.replaceAll("9", "\u2089");
                           
                            final String stringa = str;
                                formulaConvertita.add(stringa);
                               
                                        items.add(new ListViewItem()
                                        {{
                                                ThumbnailResource = array_image2[indice];
                                                Title = document.getElementsByTagName("nome").item(indice).getTextContent();
                                                SubTitle = stringa;
                                        }});  
                    };
                               
                        } catch (IOException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        } catch (ParserConfigurationException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (SAXException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }      
                                       
                        return response;
        }
                    @Override
                        protected void onPostExecute(String result) {
                        Dialog.dismiss();
                        CustomListViewAdapter adapter = new CustomListViewAdapter(MostraTutti.this,items);
                                lv.setAdapter(adapter);
                               
                                lv.setOnItemClickListener(
                                        new OnItemClickListener()
                                        {
                                                public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
                                                {                                              
                                                        Context context = getBaseContext();
                                               Intent myIntent = new Intent(context, Dettagli.class);
                                             
                                               myIntent.putExtra("nome_sostanza",nome.get(position));
                                             //  myIntent.putExtra("formula",formula.get(position));
                                               myIntent.putExtra("iupac",iupac.get(position));                     
                                               myIntent.putExtra("aspetto",aspetto.get(position));                     
                                               myIntent.putExtra("appartenenza",appartenenza.get(position));
                                               myIntent.putExtra("solubilita",solubilita.get(position));
                                               myIntent.putExtra("tempFus",tempFus.get(position));
                                               myIntent.putExtra("tempEboll",tempEboll.get(position));
                                               myIntent.putExtra("spiegazione",spiegazione.get(position));
                                               myIntent.putExtra("immagine", array_image2[position]);
                                               myIntent.putExtra("formulaConvertita", formulaConvertita.get(position));
                                               myIntent.putExtra("note", note.get(position));
                                               startActivityForResult(myIntent, 0);
                                                }
                                               
                                            }
                                     );
                        }
                        }
       
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getSupportMenuInflater().inflate(R.menu.activity_main, menu);
                return true;
        }
       
 class ListViewItem {
        public int ThumbnailResource;
        public String Title;
        public String SubTitle;
  }
}

e non ho più l'errore. Però sul simulatore impiega mooooolto di più

16 secondi metodo classico
1 minuto con AsyncTask   :'(

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:java.lang.NullPointerException in AsyncTask
« Risposta #3 il: 25 Aprile 2013, 12:49:43 CEST »
0
e non ho più l'errore. Però sul simulatore impiega mooooolto di più

16 secondi metodo classico
1 minuto con AsyncTask   :'(
Metodo classico = fare le operazioni sul thread ui?
Le operazioni sono le stesse?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline enzoses

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X
Re:java.lang.NullPointerException in AsyncTask
« Risposta #4 il: 25 Aprile 2013, 12:52:58 CEST »
0
Nel thread principale, non conosco bene la terminologia. Se vuoi posto il codice così puoi dargli un'occhiata

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:java.lang.NullPointerException in AsyncTask
« Risposta #5 il: 25 Aprile 2013, 12:56:00 CEST »
0
Vediamo..
Postate il LogCat LogCat LogCat LogCat LogCat

Offline enzoses

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X
Re:java.lang.NullPointerException in AsyncTask
« Risposta #6 il: 25 Aprile 2013, 13:08:41 CEST »
0
Eccolo:

Codice (Java): [Seleziona]
package it.vscreazioni.farmachimica;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class MostraTutti extends SherlockActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                                 
                setContentView(R.layout.mostra_tutti);
                getSupportActionBar().setDisplayShowHomeEnabled(false);
       
                final ListView lv = (ListView) findViewById(R.id.listView);
                final List<ListViewItem> items = new ArrayList<MostraTutti.ListViewItem>();
                final ArrayList<String> nome = new ArrayList<String>();
                ...
               
                final   int array_image2[] ={R.drawable.iodocloroidrossichinolina,R.drawable.acidoacetilsalicilico,
                                R.drawable.acidoascorbico,R.drawable.acidobarbiturico,R.drawable.acidobenzoico,
                                R.drawable.acidocitrico,R.drawable.acidoglutammico,R.drawable.acidolattico,
                                ... };
               
InputStream xmlFile = getResources().openRawResource(R.raw.sostanze);
               
                try {
                        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
                        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
                        final Document document = documentBuilder.parse(xmlFile);
                        document.getDocumentElement().normalize();
                        NodeList nodeList = document.getElementsByTagName("sostanza");
                       
                        for (int i = 0; i < nodeList.getLength(); i++) {
                        final int       indice = i;

                        nome.add(document.getElementsByTagName("nome").item(indice).getTextContent());
                        iupac.add(document.getElementsByTagName("iupac").item(indice).getTextContent());
                        aspetto.add(document.getElementsByTagName("aspetto").item(indice).getTextContent());
                        formula.add(document.getElementsByTagName("formula").item(indice).getTextContent());
                        immagine.add(document.getElementsByTagName("immagine").item(indice).getTextContent());
                        appartenenza.add(document.getElementsByTagName("appartenenza").item(indice).getTextContent());
                        spiegazione.add(document.getElementsByTagName("spiegazione").item(indice).getTextContent());
                        tempFus.add(document.getElementsByTagName("temperaturaFusione").item(indice).getTextContent());
                        tempEboll.add(document.getElementsByTagName("temperaturaEbollizione").item(indice).getTextContent());
                        solubilita.add(document.getElementsByTagName("solubilita").item(indice).getTextContent());
                        note.add(document.getElementsByTagName("eccezioni").item(indice).getTextContent());
                       
                        String str = document.getElementsByTagName("formula").item(indice).getTextContent();
                         
                    str = str.replaceAll("0", "\u2080");
                    str = str.replaceAll("1", "\u2081");
                    str = str.replaceAll("2", "\u2082");
                    str = str.replaceAll("3", "\u2083");
                    str = str.replaceAll("4", "\u2084");
                    str = str.replaceAll("5", "\u2085");
                    str = str.replaceAll("6", "\u2086");
                    str = str.replaceAll("7", "\u2087");
                    str = str.replaceAll("8", "\u2088");
                    str = str.replaceAll("9", "\u2089");
                   
                    final String stringa = str;
                        formulaConvertita.add(stringa);
                   
                    items.add(new ListViewItem()
                                {{
                                        ThumbnailResource = array_image2[indice];
                                        Title = document.getElementsByTagName("nome").item(indice).getTextContent();
                                        SubTitle = stringa;
                                }});
                        }
                } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                } catch (ParserConfigurationException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (SAXException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }              
                CustomListViewAdapter adapter = new CustomListViewAdapter(this,items);
                lv.setAdapter(adapter);

                lv.setOnItemClickListener(
                        new OnItemClickListener()
                        {
                                public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
                                {                                              
                                        Context context = getBaseContext();
                               Intent myIntent = new Intent(context, Dettagli.class);
                             
                               myIntent.putExtra("nome_sostanza",nome.get(position));
                               myIntent.putExtra("iupac",iupac.get(position));                     
                               myIntent.putExtra("aspetto",aspetto.get(position));                     
                               myIntent.putExtra("appartenenza",appartenenza.get(position));
                               myIntent.putExtra("solubilita",solubilita.get(position));
                               myIntent.putExtra("tempFus",tempFus.get(position));
                               myIntent.putExtra("tempEboll",tempEboll.get(position));
                               myIntent.putExtra("spiegazione",spiegazione.get(position));
                               myIntent.putExtra("immagine", array_image2[position]);
                               myIntent.putExtra("formulaConvertita", formulaConvertita.get(position));
                               myIntent.putExtra("note", note.get(position));
                               startActivityForResult(myIntent, 0);
                                }
                               
                            }
                     );
        }
       
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                getSupportMenuInflater().inflate(R.menu.activity_main, menu);
                return true;
        }
       
 class ListViewItem {
        public int ThumbnailResource;
        public String Title;
        public String SubTitle;
  }
}

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:java.lang.NullPointerException in AsyncTask
« Risposta #7 il: 25 Aprile 2013, 13:14:31 CEST »
0
Non mi pare di vedere motivi per cui una ci dovrebbe mettere quasi il quadruplo dell'altra.
Hai provato a testarla su un dispositivo fisico?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline enzoses

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X
Re:java.lang.NullPointerException in AsyncTask
« Risposta #8 il: 25 Aprile 2013, 13:17:34 CEST »
0
Si, la testo su un Galaxy Note 2. Con AsyncTask legge tutto in 2-3 secondi, senza in 4-5. Il problema può sussistere sui telefoni meno performanti. Ho anche provato a mettere il parsing in nuovo thread, così si vede la listView che si popola ma resta inattiva fino a quando non è definitivamente terminato il parsing stesso. Non riesco a trovare una soluzione ottimale

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:java.lang.NullPointerException in AsyncTask
« Risposta #9 il: 25 Aprile 2013, 13:35:27 CEST »
0
Si, la testo su un Galaxy Note 2. Con AsyncTask legge tutto in 2-3 secondi, senza in 4-5. Il problema può sussistere sui telefoni meno performanti. Ho anche provato a mettere il parsing in nuovo thread, così si vede la listView che si popola ma resta inattiva fino a quando non è definitivamente terminato il parsing stesso. Non riesco a trovare una soluzione ottimale
Il metodo doInBackground é già eseguito in un nuovo thread, é quello il suo compito.
Ma quindi i problemi sono solo sull'emulatore?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline enzoses

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X
Re:java.lang.NullPointerException in AsyncTask
« Risposta #10 il: 25 Aprile 2013, 13:42:44 CEST »
0
Lo provo su un altro telefono e ti faccio sapere

Post unito: 25 Aprile 2013, 14:11:42 CEST
Provato su un Nexus S, AsyncTask richiede un paio di secondi in più...su stackOverlow mi hanno dato una possibile risposta:

"the reason is that AsyncTask's doInBackground() runs in a backgroud priority class and has to share at most 10% of CPU time with all other background tasks, such as your RSS reader's etc -- no matter how idle the system really is."

e link ad una possibile soluzione, che però non mi è molto chiara.
E' meglio che marco questo Topic come risolto e ne apro un altro?
« Ultima modifica: 25 Aprile 2013, 14:11:42 CEST da enzoses, Reason: Merged DoublePost »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:java.lang.NullPointerException in AsyncTask
« Risposta #11 il: 25 Aprile 2013, 15:57:38 CEST »
+1
Sì, meglio di si.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline enzoses

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X
Re:java.lang.NullPointerException in AsyncTask
« Risposta #12 il: 25 Aprile 2013, 16:00:02 CEST »
0
Ok, allora topic risolto e +1 thanks! :D