Autore Topic: CustomDialog con ListView popolata da Database  (Letto 1633 volte)

Offline Alet

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Iconia Tab A501
  • Sistema operativo:
    Windows 7,Windows Xp
CustomDialog con ListView popolata da Database
« il: 05 Agosto 2012, 18:33:47 CEST »
0
Ciao Ragazzi,

son giorni che mi sto scervellando per creare un'activity che alla pressione di un tasto mi faccia comparire una customdialog con una listview di elementi presi da un database.
Premesso che sono un vero novellino sulla programmazione android  son riuscito a far apparire la cdialog con il layout contenente la listview,il mio problema rimane però andare a popolarla.

Praticamente con il codice che vi posto sotto l'applicazione mi crasha appena entro nell'activity in questione

Codice (java class="AnagraficoClienti"): [Seleziona]
 View view = getLayoutInflater().inflate(R.layout.listaclienti, null);
                           final AlertDialog.Builder listaClienti = new AlertDialog.Builder(this);
                           listaClienti.setTitle("Lista Clienti");
                           listaClienti.setMessage("seleziona un cliente da modificare");
                           listaClienti.setCancelable(true);
                           listaClienti.setView(view);                                                                                           
                           listaClienti.create();              

Codice (xml file="listaclienti"): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/White"
    android:orientation="horizontal"
    android:padding="10dp" >
 
  <LinearLayout android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/linearLayout1"
      android:orientation="vertical">
 
    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:text="TextView"
        android:textColor="@color/Black"
        android:textColorHint="@color/Black"
        android:textSize="@dimen/Testo_20" >

</TextView>

      <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="match_parent"
      android:orientation="horizontal" >
     
        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:text="TextView"
            android:textColor="@color/Black"
            android:textSize="@dimen/Testo_10" >

</TextView>

    <TextView
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:text="TextView"
        android:textColor="@color/Black"
        android:textSize="@dimen/Testo_10" >

</TextView>    
  </LinearLayout>
</LinearLayout>
</LinearLayout>

Codice (java class="ListClienti "): [Seleziona]
public class ListClienti extends ListActivity{
        Cursor c;
        SimpleAdapter mioAdapter;
        @Override
    public void onCreate(Bundle savedInstanceState) {
                try{
                        super.onCreate(savedInstanceState);
                        //setContentView(R.layout.elencoclienti);  
               
                DatabaseHelper dh= new DatabaseHelper(this);
                SQLiteDatabase db = dh.getWritableDatabase();
                ClientiDB dbclienti = new ClientiDB();
                c= dbclienti.getAllClienti(db);        
               
                ArrayList<Map<String, Object>> listaDati = new ArrayList<Map<String, Object>>();
                listaDati = riempilistaDati(listaDati);  
               
                String[] from = {"String1", "String2", "String3" };
            int[] views = { R.id.text1, R.id.text2, R.id.text3 };
            mioAdapter = new SimpleAdapter (this,listaDati,R.layout.listaclienti,from,views);                                                      
            this.setListAdapter(mioAdapter);
               
                c.close();
                db.close();
               
        }catch(Exception e){               
           System.err.println("ERRORE DELLA KRELL INFORMATICA"+e);
        }  
       
    }              

                protected void onListItemClick(ListView l, View v, int position, long id, TextView sa)
                {
                        try{
                                Toast.makeText(getApplicationContext(), "click ", Toast.LENGTH_LONG).show();           
                        }catch(Exception e){
                                System.err.println("click su listview"+e);
                        }
                }
             private TextView findViewByID(int text1) {
                        // TODO Auto-generated method stub
                        return null;
                }                            
             
             /*riempo la lista dati*/
             private ArrayList<Map<String, Object>> riempilistaDati(ArrayList<Map<String, Object>> listaDati) {        
                while (c.moveToNext())                 
                 {                                                                                                     
                        listaDati.add( creaMappa( c.getString(1)+" - "+c.getString(2), c.getString(4), c.getString(3)+" - "+c.getString(5)+" ("+c.getString(6)+")" ));                                                         
                 }     
                        return listaDati;  
             }
             /*CREO LA MAPPA*/
             private Map<String, Object> creaMappa(String String1, String String2, String String3)
             {
                         
                        Map<String, Object> map = new HashMap<String, Object>();
             
                        map.put("String1", String1);
                        map.put("String2", String2);
                        map.put("String3", String3);
             
                        return map;
              }        
           
                   
           

           
        }

il log cat invece mi restituisce:

08-05 18:44:04.660: E/AndroidRuntime(3953): FATAL EXCEPTION: main
08-05 18:44:04.660: E/AndroidRuntime(3953): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.krell.kceunikopv/form.AnagraficoClienti}: java.lang.NullPointerException
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.os.Looper.loop(Looper.java:137)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.app.ActivityThread.main(ActivityThread.java:4424)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at java.lang.reflect.Method.invokeNative(Native Method)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at java.lang.reflect.Method.invoke(Method.java:511)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at dalvik.system.NativeStart.main(Native Method)
08-05 18:44:04.660: E/AndroidRuntime(3953): Caused by: java.lang.NullPointerException
08-05 18:44:04.660: E/AndroidRuntime(3953):    at form.AnagraficoClienti.pulisciMaschera(AnagraficoClienti.java:301)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at form.AnagraficoClienti.onCreate(AnagraficoClienti.java:101)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.app.Activity.performCreate(Activity.java:4465)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
08-05 18:44:04.660: E/AndroidRuntime(3953):    ... 11 more


Riuscite a darmi una mano?
Grazieeee  :-P :-P :D

Offline Alet

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Iconia Tab A501
  • Sistema operativo:
    Windows 7,Windows Xp
Re:CustomDialog con ListView popolata da Database
« Risposta #1 il: 06 Agosto 2012, 14:40:19 CEST »
0
Qualche news?
Cercando anche sul forum non ho trovato molto che facesse al caso mio ...heelp  ??? ??? ??? ???

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:CustomDialog con ListView popolata da Database
« Risposta #2 il: 06 Agosto 2012, 23:01:40 CEST »
0
Dovresti imparare a leggere ed interpretare gli errori che ti vengono stampati...

Codice: [Seleziona]
08-05 18:44:04.660: E/AndroidRuntime(3953): Caused by: java.lang.NullPointerException
08-05 18:44:04.660: E/AndroidRuntime(3953):    at form.AnagraficoClienti.pulisciMaschera(AnagraficoClienti.java:301)
08-05 18:44:04.660: E/AndroidRuntime(3953):    at form.AnagraficoClienti.onCreate(AnagraficoClienti.java:101)

Il problema è nella classe AnagraficoClienti alla riga 301

Offline Alet

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Iconia Tab A501
  • Sistema operativo:
    Windows 7,Windows Xp
Re:CustomDialog con ListView popolata da Database
« Risposta #3 il: 05 Settembre 2012, 13:03:02 CEST »
0
Problema risolto ...grazie mille :D

Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
Re:CustomDialog con ListView popolata da Database
« Risposta #4 il: 10 Ottobre 2012, 23:54:22 CEST »
0
Fantastico!!!
Mi piace un sacco questo post.... "ho risolto grazie mille"...

Ma un po di volontà e scrivere come si è risolto il problema no?
Scusate lo sfogo...

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
R: Re:CustomDialog con ListView popolata da Database
« Risposta #5 il: 10 Ottobre 2012, 23:59:51 CEST »
0
Fantastico!!!
Mi piace un sacco questo post.... "ho risolto grazie mille"...

Ma un po di volontà e scrivere come si è risolto il problema no?
Scusate lo sfogo...

Se hai un problema piuttosto di riesumare vecchi thread aprine uno nuovo ;-)

Inviato dal mio Galaxy Nexus con Tapatalk 2


Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
R: CustomDialog con ListView popolata da Database
« Risposta #6 il: 11 Ottobre 2012, 10:31:42 CEST »
0
Era solo una considerazione.
Il forum é una cosa fantastica, ma a volte puó essere frustrante per un neofita trovare la soluzione nascosta in centinaia di post.
Mi sembra solo una buona pratica di cortesia, quando si chiude una discussione con RISOLTO di riportare in breve come si é risolto e dove stava l'errore.
Allo stesso tempo puó essere frustrante anche per i più esperti dover rispondere sempre alle stesse domande.
Ad ogni modo non ho aperto post perche non ho un problema da risolvere, un amico mi chiedeva come fare una determinata cosa e ho cercato qua e la nel forum e probabilmente aprira lui la sua richiesta.
Un saluto e bun lavoro a tutti.

Inviato dal mio GT-I9000 con Tapatalk 2