Autore Topic: Problema ListView su ordinario SimpleAdapter  (Letto 577 volte)

Offline UchihaDD

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows
Problema ListView su ordinario SimpleAdapter
« il: 11 Marzo 2011, 23:17:58 CET »
0
Salve a tutti, credo di fare tutto correttamente ma invece mi ritrovo un bel NullPointerException nella riga quando effettuo l'assegnamento del SimpleAdapter alla List View.

Vi posto la mia soluzione:
Codice (Java): [Seleziona]
private void operazioni(){
                d.open();
                d.inserisci("1", "a", "0");
                d.inserisci("2", "aiuto", "0");
                d.inserisci("3", "aiuto", "1");
                d.inserisci("4", "v", "0");
                d.inserisci("5", "h", "1");
                //d.cancella("3");
                d.aggiorna("4", "cancello", "1");
                d.aggiorna("1", "porta", "0");
                d.aggiorna("2", "luci", "0");
                d.aggiorna("3", "luci", "1");
                d.aggiorna("5", "temp", "1");
                d.inserisci("6", "finestra", "0");
               
                ListView lista3 =(ListView)findViewById(R.id.tlista1);
               
                ArrayList<HashMap<String, String>> mylista = new ArrayList<HashMap<String, String>>();
               
                HashMap<String, String> map = new HashMap<String, String>();
                map.put("titolo", "Luci");
                map.put("numero", ""+((int) DatabaseUtils.longForQuery(d.dbsq,"SELECT COUNT(PIN) FROM attuatori  WHERE TYPE = 'luci'",null)));
                mylista.add(map);
               
                map = new HashMap<String, String>();
                map.put("titolo", "Porte");
                map.put("numero", ""+((int) DatabaseUtils.longForQuery(d.dbsq,"SELECT COUNT(PIN) FROM attuatori  WHERE TYPE = 'porta'",null)));
                mylista.add(map);
               
                map = new HashMap<String, String>();
                map.put("titolo", "Cancelli");
                map.put("numero", ""+((int) DatabaseUtils.longForQuery(d.dbsq,"SELECT COUNT(PIN) FROM attuatori  WHERE TYPE = 'cancello'",null)));
                mylista.add(map);
               
                map = new HashMap<String, String>();
                map.put("titolo", "Temperatura");
                map.put("numero", ""+((int) DatabaseUtils.longForQuery(d.dbsq,"SELECT COUNT(PIN) FROM attuatori  WHERE TYPE = 'temp'",null)));
                mylista.add(map);
               
                map = new HashMap<String, String>();
                map.put("titolo", "Finestre");
                map.put("numero", ""+((int) DatabaseUtils.longForQuery(d.dbsq,"SELECT COUNT(PIN) FROM attuatori  WHERE TYPE = 'finestra'",null)));
                mylista.add(map);
               
                String[] from = {"titolo", "numero"};
                int[] to = {R.id.item1, R.id.item2};
                SimpleAdapter adattatore = new SimpleAdapter(getApplicationContext(), mylista, R.layout.lista, from , to);
                lista3.setAdapter(adattatore); //ERRORE da LOGCAT NULLPOINTEREXCEPTION
                registerForContextMenu(lista3);
               
                d.close();
Mentre questi sono rispettivamente il layout che ho deciso di riempire lista.xml:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
     <TextView android:id="@+id/item1"
           android:text="row_id"
           android:layout_height="fill_parent"
           android:layout_width="wrap_content"
           android:width="20dip"
       />
        <TextView android:id="@+id/item2"
           android:text="col_1"
           android:layout_height="fill_parent"
           android:layout_width="wrap_content"
           android:width="100dip"
       />
</LinearLayout>

ed il file contenente gli altri id necessari in row.xml:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
        <TextView android:text="TextView"
       android:id="@+id/lt1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:width="20dip"
       android:height="30dip">
        </TextView>
        <TextView android:text="TextView"
        android:id="@+id/lt2"
        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:width="20dip"
         android:height="30dip">
          </TextView>
 
   
   
<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:text="TextView"
    android:id="@+id/tlista1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:textSize="16sp" >
     </ListView>
        </LinearLayout>
</LinearLayout>

Ho provato in tutti i modi a cambiare il layout ma mi da sempre lo stesso errore NullPointerException il logcat nella riga 156:
lista3.setAdapter(adattatore); //ERRORE da LOGCAT NULLPOINTEREXCEPTION
      
l'unica cosa che mi viene in mente è che adattatore sia in realta NULL ma credo sia strano visto come è stato inizializzato...

Avete idee?

LogCat
Codice: [Seleziona]
D/AndroidRuntime(  705): Shutting down VM

W/dalvikvm(  705): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)

E/AndroidRuntime(  705): Uncaught handler: thread main exiting due to uncaught exception

E/AndroidRuntime(  705): java.lang.NullPointerException

E/AndroidRuntime(  705):         at android.domotic.Domotic.operazioni(Domotic.java:156)

E/AndroidRuntime(  705):         at android.domotic.Domotic.onOptionsItemSelected(Domotic.java:99)

E/AndroidRuntime(  705):         at android.app.Activity.onMenuItemSelected(Activity.java:2085)

E/AndroidRuntime(  705):         at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:820)

E/AndroidRuntime(  705):         at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:139)

E/AndroidRuntime(  705):         at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:813)

E/AndroidRuntime(  705):         at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:519)

E/AndroidRuntime(  705):         at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)

E/AndroidRuntime(  705):         at android.view.View.onTouchEvent(View.java:3828)

E/AndroidRuntime(  705):         at android.widget.TextView.onTouchEvent(TextView.java:6291)

E/AndroidRuntime(  705):         at android.view.View.dispatchTouchEvent(View.java:3368)

E/AndroidRuntime(  705):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)

E/AndroidRuntime(  705):         at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)

E/AndroidRuntime(  705):         at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1691)

E/AndroidRuntime(  705):         at android.view.ViewRoot.handleMessage(ViewRoot.java:1525)

E/AndroidRuntime(  705):         at android.os.Handler.dispatchMessage(Handler.java:99)

E/AndroidRuntime(  705):         at android.os.Looper.loop(Looper.java:123)

E/AndroidRuntime(  705):         at android.app.ActivityThread.main(ActivityThread.java:3948)

E/AndroidRuntime(  705):         at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime(  705):         at java.lang.reflect.Method.invoke(Method.java:521)

E/AndroidRuntime(  705):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)

E/AndroidRuntime(  705):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)

E/AndroidRuntime(  705):         at dalvik.system.NativeStart.main(Native Method)

I/Process (  563): Sending signal. PID: 705 SIG: 3

I/dalvikvm(  705): threadid=7: reacting to signal 3

I/dalvikvm(  705): Wrote stack trace to '/data/anr/traces.txt'

I/ARMAssembler(  563): generated scanline__00000077:03515104_00000000_00000000 [ 27 ipp] (41 ins) at [0x233600:0x2336a4] in 347753 ns

I/ARMAssembler(  563): generated scanline__00000077:03515104_00001001_00000000 [ 64 ipp] (84 ins) at [0x2336a8:0x2337f8] in 1222775 ns

I/Process (  705): Sending signal. PID: 705 SIG: 9

I/ActivityManager(  563): Process android.domotic (pid 705) has died.

I/WindowManager(  563): WIN DEATH: Window{43611820 android.domotic/android.domotic.Domotic paused=false}

I/WindowManager(  563): WIN DEATH: Window{437450a0 Panel:android.domotic/android.domotic.Domotic paused=false}

W/InputManagerService(  563): Got RemoteException sending setActive(false) notification to pid 705 uid 10022

Mi son dimenticato di dire che la mia classe estende Activity e non ListActivity
« Ultima modifica: 11 Marzo 2011, 23:22:43 CET da UchihaDD, Reason: dimenticanza »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema ListView su ordinario SimpleAdapter
« Risposta #1 il: 12 Marzo 2011, 01:15:56 CET »
0
Il setContentView lo fai correttamente?

Offline UchihaDD

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows
Re:Problema ListView su ordinario SimpleAdapter
« Risposta #2 il: 14 Marzo 2011, 20:12:13 CET »
0
Si penso di aver capito che l'errore era che non definivo le TextView necessarie nel layout main.xml che importavo nel programma.
Ora voglio chiedere quindi dato il mio errore, c'è un modo per importare più file xml in una stessa classe Activity di Android?

Ringrazio per la risposta, e scusate per il disturbo, forse dovrei comprarmi un bel libro di Android