CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 6 su 6
Discussione:

Problema ListView: NullPointerException

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    12

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Problema ListView: NullPointerException

    Ho bisogno di una list view con due colonne, i quali dati vengono letti da un database SQLite preventivamente caricato sul device. Per quanto riguarda tutta la gestione db, compresa la lettura da query non ho problemi.

    Il mio problema è che la funzione setAdapter() lancia l'eccezione:

    codice:
    ERROR/AndroidRuntime(4638): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eReporting/com.eReporting.Report}: java.lang.NullPointerException
    
    Di seguito il codice utilizzato:

    codice:
    ListView list = (ListView) findViewById(R.id.viaSearchLView);
            
            ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("from", "6:30 AM");
            map.put("to", "7:40 AM");
            mylist.add(map);
    
            SimpleAdapter mSchedule = new SimpleAdapter(this, 
            		mylist, 
            		R.layout.via_listview,
                    new String[] {"from", "to"}, 
                        new int[] {R.id.viaTVId, R.id.viaTVVia});
            list.setAdapter(mSchedule);
    Ho provato (dopo aver cambiato extends Activity con extends ListActivity)

    codice:
    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("from", "6:30 AM");
            map.put("to", "7:40 AM");
            mylist.add(map);
    
            SimpleAdapter mSchedule = new SimpleAdapter(this, 
            		mylist, 
            		R.layout.via_listview,
                    new String[] {"from", "to"}, 
                        new int[] {R.id.viaTVId, R.id.viaTVVia});
            setListAdapter(mSchedule);
    che mi lancia la seguente eccezione:

    codice:
    ERROR/AndroidRuntime(4942): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eReporting/com.eReporting.Report}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
    


    A voi la parola !
    Vi ringrazio in anticipo per i suggerimenti che mi darete!

  2.  
  3. #2
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    Quote Originariamente inviato da Link88
    Ho bisogno di una list view con due colonne, i quali dati vengono letti da un database SQLite preventivamente caricato sul device. Per quanto riguarda tutta la gestione db, compresa la lettura da query non ho problemi.



    Il mio problema è che la funzione setAdapter() lancia l'eccezione:



    ERROR/AndroidRuntime(4638): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eReporting/com.eReporting.Report}: java.lang.NullPointerException





    Di seguito il codice utilizzato:



    ListView list = (ListView) findViewById(R.id.viaSearchLView);



    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

    HashMap<String, String> map = new HashMap<String, String>();

    map.put("from", "6:30 AM");

    map.put("to", "7:40 AM");

    mylist.add(map);



    SimpleAdapter mSchedule = new SimpleAdapter(this,

    mylist,

    R.layout.via_listview,

    new String[] {"from", "to"},

    new int[] {R.id.viaTVId, R.id.viaTVVia});

    list.setAdapter(mSchedule);



    Ho provato (dopo aver cambiato extends Activity con extends ListActivity)



    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

    HashMap<String, String> map = new HashMap<String, String>();

    map.put("from", "6:30 AM");

    map.put("to", "7:40 AM");

    mylist.add(map);



    SimpleAdapter mSchedule = new SimpleAdapter(this,

    mylist,

    R.layout.via_listview,

    new String[] {"from", "to"},

    new int[] {R.id.viaTVId, R.id.viaTVVia});

    setListAdapter(mSchedule);



    che mi lancia la seguente eccezione:



    ERROR/AndroidRuntime(4942): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eReporting/com.eReporting.Report}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'









    A voi la parola !

    Vi ringrazio in anticipo per i suggerimenti che mi darete!

    ci passeresti l intero errore perfavore?


    Inviato dal mio HTC Vision usando Androidiani App

    Twitter @veke87

  4. #3
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    12

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Per il primo caso

    codice:
    03-02 12:40:09.455: WARN/dalvikvm(4638): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    03-02 12:40:09.455: ERROR/AndroidRuntime(4638): Uncaught handler: thread main exiting due to uncaught exception
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eReporting/com.eReporting.Report}: java.lang.NullPointerException
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.os.Handler.dispatchMessage(Handler.java:99)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.os.Looper.loop(Looper.java:123)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at java.lang.reflect.Method.invokeNative(Native Method)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at java.lang.reflect.Method.invoke(Method.java:521)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at dalvik.system.NativeStart.main(Native Method)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638): Caused by: java.lang.NullPointerException
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at com.eReporting.Report.onCreate(Report.java:126)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    03-02 12:40:09.486: ERROR/AndroidRuntime(4638):     ... 11 more
    Per il secondo caso

    codice:
    03-02 12:51:44.955: WARN/dalvikvm(4942): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    03-02 12:51:44.964: ERROR/AndroidRuntime(4942): Uncaught handler: thread main exiting due to uncaught exception
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eReporting/com.eReporting.Report}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.os.Handler.dispatchMessage(Handler.java:99)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.os.Looper.loop(Looper.java:123)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at java.lang.reflect.Method.invokeNative(Native Method)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at java.lang.reflect.Method.invoke(Method.java:521)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at dalvik.system.NativeStart.main(Native Method)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.ListActivity.onContentChanged(ListActivity.java:236)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.Activity.setContentView(Activity.java:1622)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at com.eReporting.Report.onCreate(Report.java:90)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    03-02 12:51:45.005: ERROR/AndroidRuntime(4942):     ... 11 more
    Sono assolutamente disponibile per qualunque altra cosa voi abbiate bisogno

  5. #4
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    Allora per il primo caso ci serve il sorgente di com.eReporting.Report.onCreate.

    Per il secondo caso siccome la tua activity è una ListActivity, la lista nell'xml la devi definire con l'attributo id="@+id/android:list" come nell'esempio qui

    Twitter @veke87

  6. #5
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    12

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Siccome il metodo onCreate è molto molto lungo ho rimesso la funzione in un progetto a parte. Preferirei concentrarmi sul primo metodo (che usa extends Activity)...

    Ho riscritto per bene tutto:

    codice:
    package com.provalistview;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    public class ProvaListV extends Activity {
        	
    
        public void onCreate(Bundle savedInstanceState) {
    		
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            ListView lv1;
            
            lv1= (ListView) findViewById(R.id.listview);
        	List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
        	
        	        for(int i = 0; i < 10; i++){
        	
        	            HashMap<String, String> map = new HashMap<String, String>();
        	
        	            map.put("col_1", "col_1_item_" + i);
        	
        	            map.put("col_2", "col_2_item_" + i);
        	
        	            fillMaps.add(map);
        	
        	        }
        	        
        	String lv_arr[]={"Android","Andr"};
            
        	ListAdapter adp= new SimpleAdapter(this, 
        			fillMaps, 
        			R.layout.listview_lay, 
        			lv_arr, new int[]{R.id.viaTVId, R.id.viaTVVia});
        	
        	lv1.setAdapter(adp);
        }
    }
    main.xml:

    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@+id/main"
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:orientation="vertical"
    	android:layout_height="fill_parent"
    	android:layout_width="fill_parent">
    		<ListView android:id="@+id/listview"
    			android:layout_height="fill_parent"
    			android:layout_width="fill_parent">
    		</ListView>
    </LinearLayout>
    listview_lay.xml:

    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout 
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_height="wrap_content" 
    	android:gravity="left|center"
     	android:layout_width="wrap_content" >
    	<TableRow>
    	 	<TextView 
    	 		android:id="@+id/viaTVId" 
    	 		android:layout_width="wrap_content"
    	 		android:layout_height="wrap_content" 
    	 		android:gravity="left|top"
    	 		android:textStyle="bold"
    		 	android:text="hi"/>
    	 </TableRow>
    	 <TableRow>
    	 	<TextView 
    	 		android:id="@+id/viaTVVia"
    	 		android:text="Prova" 
    	 		android:layout_width="wrap_content" 
    	 		android:layout_height="wrap_content"
    	 		android:gravity="left|center"/>
     	</TableRow> 
    </TableLayout>

  7. #6
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    12

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Up! Ho risolto, di seguito il codice (in parte preso da qui)


    codice:
    package com.provalistview;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    public class ProvaListV extends ListActivity {
        	
    
        public void onCreate(Bundle savedInstanceState) {
        	
    		
        	
        	super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        	ListAdapter mSchedule;
        	 
        	ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
        	HashMap<String, String> map = new HashMap<String, String>();
        	map.put("train", "101");
        	map.put("from", "6:30 AM");
        	mylist.add(map);
        	map = new HashMap<String, String>();
        	map.put("train", "103(x)");
        	map.put("from", "6:35 AM");
        	mylist.add(map);
        	mSchedule = new SimpleAdapter(this, mylist, R.layout.row,
        	            new String[] {"train", "from"}, new int[] {R.id.TRAIN_CELL, R.id.FROM_CELL});
        	setListAdapter(mSchedule);
        }
    }

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy