Autore Topic: inserire dati in ListView da adapter  (Letto 1554 volte)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
inserire dati in ListView da adapter
« il: 05 Maggio 2011, 15:19:55 CEST »
0
Ciao!
Ho il metodo onCreate che mi deve visualizzare tutta la mia lista di eventi...
Basta che finisco con         eventsLv.setAdapter(adapter);      per mostrare il tutto?

Vi lascio il codice!
Codice: [Seleziona]
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        setContentView(R.layout.main);
        ListView eventsLv=(ListView)findViewById(R.id.eventsLv); //carichiamo la ListView
       
        AppDB db=new AppDB(getApplicationContext());
        db.open();  //apriamo il db
       
        if(db.fetchEvents().getCount()==0){  //inserimento dati
           
                db.insertEvent("Grigliata", "Piave");
                db.insertEvent("Serata alcorica", "Villa di Mohammed");
                db.insertEvent("PikNic", "Bosco");
                db.insertEvent("Pranzo", "Da Cicciobenzina");
                db.insertEvent("Uscita sulle Dolomiti ", "Cortina");
        }
       
        Cursor c=db.fetchEvents(); // recupero tutta la lista degli eventi
        startManagingCursor(c);
       
        SimpleCursorAdapter adapter=new SimpleCursorAdapter( //semplice adapter per i cursor
                        this,
                        R.layout.line_event, //il layout di ogni riga/prodotto
                        c,
                        new String[]{AppDB.eveName}, //queste colonne (vado a pescarle nel database)
                        new int[]{R.id.eveName}); //in queste views (vado a pescarle tra le view)
       
        eventsLv.setAdapter(adapter); //la listview ha questo adapter
       
       
       
         
       

       
       
        db.close();
« Ultima modifica: 05 Maggio 2011, 15:53:03 CEST da cadupper »

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:inserire dati in ListView da adapter
« Risposta #1 il: 05 Maggio 2011, 22:11:24 CEST »
0
All' esecuzione l'app si pianta... lascio il logcat
Codice: [Seleziona]

W/InputManagerService(  279): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43c8b7f8

D/dalvikvm(  490): GC_EXPLICIT freed 118 objects / 8232 bytes in 91ms

D/AndroidRuntime( 1351):

D/AndroidRuntime( 1351): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<

D/AndroidRuntime( 1351): CheckJNI is OFF

D/AndroidRuntime( 1351): --- registering native functions ---

D/AndroidRuntime( 1351): Shutting down VM

D/dalvikvm( 1351): Debugger has detached; object registry had 1 entries

I/AndroidRuntime( 1351): NOTE: attach of thread 'Binder Thread #3' failed

D/AndroidRuntime( 1359):

D/AndroidRuntime( 1359): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<

D/AndroidRuntime( 1359): CheckJNI is OFF

D/AndroidRuntime( 1359): --- registering native functions ---

I/ActivityManager(  279): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=it.unipd.dei.es1011.droidgrill/.Events }

D/AndroidRuntime( 1359): Shutting down VM

D/dalvikvm( 1359): Debugger has detached; object registry had 1 entries

I/AndroidRuntime( 1359): NOTE: attach of thread 'Binder Thread #3' failed

I/ActivityManager(  279): Start proc it.unipd.dei.es1011.droidgrill for activity it.unipd.dei.es1011.droidgrill/.Events: pid=1366 uid=10079 gids={1015}

D/AndroidRuntime( 1366): Shutting down VM

W/dalvikvm( 1366): threadid=1: thread exiting with uncaught exception (group=0x400207e8)

E/AndroidRuntime( 1366): FATAL EXCEPTION: main

E/AndroidRuntime( 1366): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.unipd.dei.es1011.droidgrill/it.unipd.dei.es1011.droidgrill.Events}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

E/AndroidRuntime( 1366):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)

E/AndroidRuntime( 1366):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)

E/AndroidRuntime( 1366):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)

E/AndroidRuntime( 1366):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)

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

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

E/AndroidRuntime( 1366):         at android.app.ActivityThread.main(ActivityThread.java:4627)

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

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

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

E/AndroidRuntime( 1366):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

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

E/AndroidRuntime( 1366): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

E/AndroidRuntime( 1366):         at android.app.ListActivity.onContentChanged(ListActivity.java:245)

E/AndroidRuntime( 1366):         at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)

E/AndroidRuntime( 1366):         at android.app.Activity.setContentView(Activity.java:1647)

E/AndroidRuntime( 1366):         at it.unipd.dei.es1011.droidgrill.Events.onCreate(Events.java:17)

E/AndroidRuntime( 1366):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

E/AndroidRuntime( 1366):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

E/AndroidRuntime( 1366):         ... 11 more

W/ActivityManager(  279):   Force finishing activity it.unipd.dei.es1011.droidgrill/.Events

W/ActivityManager(  279): Activity pause timeout for HistoryRecord{43f3cd20 it.unipd.dei.es1011.droidgrill/.Events}

W/ActivityManager(  279): Activity destroy timeout for HistoryRecord{43f3cd20 it.unipd.dei.es1011.droidgrill/.Events}

W/InputManagerService(  279): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43c035e8

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

I/ActivityManager(  279): Process it.unipd.dei.es1011.droidgrill (pid 1366) has died.

« Ultima modifica: 07 Maggio 2011, 00:17:36 CEST da cadupper »

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:inserire dati in ListView da adapter
« Risposta #2 il: 06 Maggio 2011, 18:24:57 CEST »
0
Nessuno sa aiutarmi...? sono bloccato.. :'( il fatto è che adesso come sono non riesco neppure a provare per sapere se il db creato funziona! A proposito, vi lascio il codice del db:


Codice: [Seleziona]
package it.unipd.dei.es1011.droidgrill;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class AppDB {

        SQLiteDatabase mDb;
        DbHelper mDbHelper;
        Context mContext;

        static final String DB_NAME = "droigrillDB";
        private static final int DB_VERSION = 1;

        // EVENTS
        static final String eveTable = "EventsTable";
        static final String eveID = "EventID";
        static final String eveName = "EventName";
        static final String evePlace = "EventPlace";
        static final String eveDate = "EventDate";

        // PEOPLE
        static final String peoTable = "PeopleTable";
        static final String peoID = "PeopleID";
        static final String peoName = "PeopleName";
        static final String peoPartec = "PeoplePrtecipation";

        // EXPENSES
        static final String expTable = "ExpensesTable";
        static final String expID = "ExpensesID";
        static final String expEvent = "ExpensesEvent";
        static final String expName = "ExpensesName";
        static final String expBuyer = "ExpensesBuyer";
        static final String expPrice = "ExpensesPrice";

        // LOCATIONS
        static final String locTable = "LocationsTable";
        static final String locID = "LocationsID";
        static final String locName = "LocationsName";
        static final String locGPS = "LocationsGPS";
        static final String locPhoto = "LocationsPhoto";

        public AppDB(Context ctx) {
                mContext = ctx;
                mDbHelper = new DbHelper(ctx, DB_NAME, null, DB_VERSION);
        }

        public void open() { // il database su cui agiamo è leggibile/scrivibile
                mDb = mDbHelper.getWritableDatabase();

        }

        public void close() { // chiudiamo il database su cui agiamo
                mDb.close();
        }

        // qui di seguito si trovano i metodi per agire sul database (qui bisogna
        // implementare i metodi per inserire, rimuovere, ecc...)

       
        public void insertEvent(String name, String place) { // metodo per inserire un evento (nome e location)
                ContentValues cv = new ContentValues();
                cv.put(eveName, name);
                cv.put(evePlace, place);
                mDb.insert(eveTable, null, cv);
        }

        public Cursor fetchEvents() { // metodo per fare la query di tutti gli eventi
                return mDb.query(eveTable, null, null, null, null, null, null);
        }

       
       
       
        // create EVENTStable
        private static final String EVENTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"
                        + eveTable
                        + " ("
                        + eveID
                        + " INTEGER PRIMARY KEY AUTOINCREMENT , "
                        + eveName + " TEXT , " + evePlace + " TEXT , " + eveDate + " TEXT)";

        // create PEOPLEtable
        private static final String PEOPLE_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"
                        + peoTable
                        + " ("
                        + peoID
                        + " INTEGER PRIMARY KEY , "
                        + peoName
                        + " TEXT , "
                        + peoPartec
                        + " INTEGER NOT NULL, FOREIGN KEY ("
                        + peoPartec + ") REFERENCES " + eveTable + " (" + eveID + "))";

        // create EXPENSESStable
        private static final String EXPENSES_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"
                        + expTable
                        + " ("
                        + expID
                        + " INTEGER PRIMARY KEY AUTOINCREMENT , "
                        + expEvent
                        + " INTEGER NOT NULL , FOREIGN KEY ("
                        + expEvent
                        + ") REFERENCES "
                        + eveTable
                        + " ("
                        + eveID
                        + ") "
                        + expName
                        + " TEXT , "
                        + expBuyer
                        + " INTEGER NOT NULL , FOREIGN KEY ("
                        + expBuyer
                        + ") REFERENCES "
                        + peoTable
                        + " ("
                        + peoID
                        + ")"
                        + expPrice + " REAL)";

        // create LOCATIONStable
        private static final String LOCATIONS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"
                        + locTable
                        + " ("
                        + locID
                        + " INTEGER PRIMARY KEY AUTOINCREMENT , "
                        + locName + " TEXT , " + locGPS + " NONE , " + locPhoto + " NONE)";

        // TRIGGER: expEvent ------> eveID non posso inserire spese per un evento
        // che non esiste
        private static final String TRIGGER_01 = "CREATE TRIGGER fk_expEvent_eveID "
                        + " BEFORE INSERT "
                        + " ON "
                        + expTable
                        + " FOR EACH ROW BEGIN"
                        + " SELECT CASE WHEN ((SELECT "
                        + eveID
                        + " FROM "
                        + eveTable
                        + " WHERE "
                        + eveID
                        + "=new."
                        + expEvent
                        + " ) IS NULL)"
                        + " THEN RAISE (ABORT,'Foreign Key Violation') END;" + "  END;";

        // TRIGGER: peoPartec ------> eveID non posso inserire partecipanti a un
        // evento prima di aver creato l'evento
        private static final String TRIGGER_02 = "CREATE TRIGGER fk_peoEvent_eveID "
                        + " BEFORE INSERT "
                        + " ON "
                        + peoTable
                        + " FOR EACH ROW BEGIN"
                        + " SELECT CASE WHEN ((SELECT "
                        + eveID
                        + " FROM "
                        + eveTable
                        + " WHERE "
                        + eveID
                        + "=new."
                        + peoPartec
                        + " ) IS NULL)"
                        + " THEN RAISE (ABORT,'Foreign Key Violation') END;" + "  END;";

        // private static final String TRIGGER_03 = ;
        // //TRIGGER: expBuyer ------> peoID Bisogna decidere se è possibile
        // aggiungere una spesa prima di aver
        // // inserito nell'elenco dei partecipanti colui che effettua la spesa
        // db.execSQL("CREATE TRIGGER fk_expEvent_eveID " +
        // " BEFORE INSERT "+
        // " ON "+employeeTable+
        //
        // " FOR EACH ROW BEGIN"+
        // " SELECT CASE WHEN ((SELECT "+colDeptID+" FROM "+deptTable+" WHERE "+colDeptID+"=new."+colDept+" ) IS NULL)"+
        // " THEN RAISE (ABORT,'Foreign Key Violation') END;"+
        // "  END;");

        private class DbHelper extends SQLiteOpenHelper {

                public DbHelper(Context context, String name, CursorFactory factory,
                                int version) {
                        super(context, name, factory, version);
                }

                @Override
                public void onCreate(SQLiteDatabase db) { //solo quando il db viene creato, creiamo le tabelle
                        db.execSQL(EVENTS_TABLE_CREATE);
                        db.execSQL(PEOPLE_TABLE_CREATE);
                        db.execSQL(EXPENSES_TABLE_CREATE);
                        db.execSQL(LOCATIONS_TABLE_CREATE);
                        db.execSQL(TRIGGER_01);
                        db.execSQL(TRIGGER_02);

                }

                @Override
                public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                        db.execSQL("DROP TABLE IF EXISTS " + eveTable);
                        db.execSQL("DROP TABLE IF EXISTS " + peoTable);
                        db.execSQL("DROP TABLE IF EXISTS " + expTable);
                        db.execSQL("DROP TABLE IF EXISTS " + locTable);
                        onCreate(db);
                }

        }

}

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:inserire dati in ListView da adapter
« Risposta #3 il: 06 Maggio 2011, 18:28:41 CEST »
0
Il logcat che hai postato non dice niente sul crash. Postane di più :)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:inserire dati in ListView da adapter
« Risposta #4 il: 07 Maggio 2011, 00:18:54 CEST »
0
Il logcat che hai postato non dice niente sul crash. Postane di più :)

Ho cambiato il logcat, ora dovrebbe essere giusto! Lo riporto anche qua sotto... dove sta l'errore?  o_O
mi preoccupa quel thread exiting with uncaught exception
Codice: [Seleziona]

W/InputManagerService(  279): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43c8b7f8

D/dalvikvm(  490): GC_EXPLICIT freed 118 objects / 8232 bytes in 91ms

D/AndroidRuntime( 1351):

D/AndroidRuntime( 1351): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<

D/AndroidRuntime( 1351): CheckJNI is OFF

D/AndroidRuntime( 1351): --- registering native functions ---

D/AndroidRuntime( 1351): Shutting down VM

D/dalvikvm( 1351): Debugger has detached; object registry had 1 entries

I/AndroidRuntime( 1351): NOTE: attach of thread 'Binder Thread #3' failed

D/AndroidRuntime( 1359):

D/AndroidRuntime( 1359): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<

D/AndroidRuntime( 1359): CheckJNI is OFF

D/AndroidRuntime( 1359): --- registering native functions ---

I/ActivityManager(  279): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=it.unipd.dei.es1011.droidgrill/.Events }

D/AndroidRuntime( 1359): Shutting down VM

D/dalvikvm( 1359): Debugger has detached; object registry had 1 entries

I/AndroidRuntime( 1359): NOTE: attach of thread 'Binder Thread #3' failed

I/ActivityManager(  279): Start proc it.unipd.dei.es1011.droidgrill for activity it.unipd.dei.es1011.droidgrill/.Events: pid=1366 uid=10079 gids={1015}

D/AndroidRuntime( 1366): Shutting down VM

W/dalvikvm( 1366): threadid=1: thread exiting with uncaught exception (group=0x400207e8)

E/AndroidRuntime( 1366): FATAL EXCEPTION: main

E/AndroidRuntime( 1366): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.unipd.dei.es1011.droidgrill/it.unipd.dei.es1011.droidgrill.Events}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

E/AndroidRuntime( 1366):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)

E/AndroidRuntime( 1366):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)

E/AndroidRuntime( 1366):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)

E/AndroidRuntime( 1366):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)

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

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

E/AndroidRuntime( 1366):         at android.app.ActivityThread.main(ActivityThread.java:4627)

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

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

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

E/AndroidRuntime( 1366):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

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

E/AndroidRuntime( 1366): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

E/AndroidRuntime( 1366):         at android.app.ListActivity.onContentChanged(ListActivity.java:245)

E/AndroidRuntime( 1366):         at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)

E/AndroidRuntime( 1366):         at android.app.Activity.setContentView(Activity.java:1647)

E/AndroidRuntime( 1366):         at it.unipd.dei.es1011.droidgrill.Events.onCreate(Events.java:17)

E/AndroidRuntime( 1366):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

E/AndroidRuntime( 1366):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

E/AndroidRuntime( 1366):         ... 11 more

W/ActivityManager(  279):   Force finishing activity it.unipd.dei.es1011.droidgrill/.Events

W/ActivityManager(  279): Activity pause timeout for HistoryRecord{43f3cd20 it.unipd.dei.es1011.droidgrill/.Events}

W/ActivityManager(  279): Activity destroy timeout for HistoryRecord{43f3cd20 it.unipd.dei.es1011.droidgrill/.Events}

W/InputManagerService(  279): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43c035e8

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

I/ActivityManager(  279): Process it.unipd.dei.es1011.droidgrill (pid 1366) has died.

« Ultima modifica: 07 Maggio 2011, 00:20:28 CEST da cadupper »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:inserire dati in ListView da adapter
« Risposta #5 il: 07 Maggio 2011, 09:42:07 CEST »
0
Quel messaggio è normale, esce per qualsiasi eccezione. Quello che ti doveva interessare era questo:

Codice: [Seleziona]
E/AndroidRuntime( 1366): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.unipd.dei.es1011.droidgrill/it.unipd.dei.es1011.droidgrill.Events}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

Comunque ho capito il problema: cambia la classe da cui erediti da ListActivity ad Activity.

ListActivity infatti prevede che la ListView abbia id android.R.id.list e inoltre anche l'assegnamento dell'adapter, i listener ecc si gestiscono in modo leggermente diverso.


Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:inserire dati in ListView da adapter
« Risposta #6 il: 07 Maggio 2011, 14:10:50 CEST »
0
Ho modificato l'estensione da  ListActivity ad Activity... ma ora ho un problema: sembra ci sia un problema di sintassi nel nella creazione della tabella... (il file del db è gia stato postato sopra)   cosa può essere? Come lo risolvo?    Intanto posto il logcat
Codice: [Seleziona]
D/AndroidRuntime(  299): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime(  299): CheckJNI is ON
D/AndroidRuntime(  299): --- registering native functions ---
I/ActivityManager(   58): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=it.unipd.dei.es1011.droidgrill/.Events }
D/AndroidRuntime(  299): Shutting down VM
D/dalvikvm(  299): Debugger has detached; object registry had 1 entries
I/AndroidRuntime(  299): NOTE: attach of thread 'Binder Thread #3' failed
I/ActivityManager(   58): Start proc it.unipd.dei.es1011.droidgrill for activity it.unipd.dei.es1011.droidgrill/.Events: pid=306 uid=10036 gids={1015}
I/Database(  306): sqlite returned: error code = 1, msg = near "EXISTSEventsTable": syntax error
E/Database(  306): Failure 1 (near "EXISTSEventsTable": syntax error) on 0x230678 when preparing 'CREATE TABLE IF NOT EXISTSEventsTable (EventID INTEGER PRIMARY KEY AUTOINCREMENT , EventName TEXT , EventPlace TEXT , EventDate TEXT)'.
D/AndroidRuntime(  306): Shutting down VM
W/dalvikvm(  306): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime(  306): FATAL EXCEPTION: main
E/AndroidRuntime(  306): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.unipd.dei.es1011.droidgrill/it.unipd.dei.es1011.droidgrill.Events}: android.database.sqlite.SQLiteException: near "EXISTSEventsTable": syntax error: CREATE TABLE IF NOT EXISTSEventsTable (EventID INTEGER PRIMARY KEY AUTOINCREMENT , EventName TEXT , EventPlace TEXT , EventDate TEXT)
E/AndroidRuntime(  306):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime(  306):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(  306):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(  306):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(  306):         at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  306):         at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  306):         at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  306):         at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  306):         at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  306):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  306):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  306):         at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  306): Caused by: android.database.sqlite.SQLiteException: near "EXISTSEventsTable": syntax error: CREATE TABLE IF NOT EXISTSEventsTable (EventID INTEGER PRIMARY KEY AUTOINCREMENT , EventName TEXT , EventPlace TEXT , EventDate TEXT)
E/AndroidRuntime(  306):         at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
E/AndroidRuntime(  306):         at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1727)
E/AndroidRuntime(  306):         at it.unipd.dei.es1011.droidgrill.AppDB$DbHelper.onCreate(AppDB.java:208)
E/AndroidRuntime(  306):         at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:106)
E/AndroidRuntime(  306):         at it.unipd.dei.es1011.droidgrill.AppDB.open(AppDB.java:53)
E/AndroidRuntime(  306):         at it.unipd.dei.es1011.droidgrill.Events.onCreate(Events.java:21)
E/AndroidRuntime(  306):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(  306):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(  306):         ... 11 more
W/ActivityManager(   58):   Force finishing activity it.unipd.dei.es1011.droidgrill/.Events
W/ActivityManager(   58): Activity pause timeout for HistoryRecord{4509f0a0 it.unipd.dei.es1011.droidgrill/.Events}
W/ActivityManager(   58): Activity destroy timeout for HistoryRecord{4509f0a0 it.unipd.dei.es1011.droidgrill/.Events}
I/Process (  306): Sending signal. PID: 306 SIG: 9
I/ActivityManager(   58): Process it.unipd.dei.es1011.droidgrill (pid 306) has died.
W/InputManagerService(   58): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@45049048



Il codice che crea la tabella è questo:
Codice: [Seleziona]
// create EVENTStable
        private static final String EVENTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"
                        + eveTable
                        + " ("
                        + eveID
                        + " INTEGER PRIMARY KEY AUTOINCREMENT , "
                        + eveName + " TEXT , " + evePlace + " TEXT , " + eveDate + " TEXT)";

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:inserire dati in ListView da adapter
« Risposta #7 il: 07 Maggio 2011, 19:14:08 CEST »
0
Manca uno spazio:

cambia
Codice: [Seleziona]
"CREATE TABLE IF NOT EXISTS"

in
Codice: [Seleziona]
"CREATE TABLE IF NOT EXISTS "



Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:inserire dati in ListView da adapter
« Risposta #8 il: 07 Maggio 2011, 20:39:14 CEST »
0
Grazie! era un errore stupidissimo, ma scrivere le stringhe per sqlite non è facile e mi porta a fare alcuni errori di sintassi... ma non c'è un metodo alternativo per lavorare su sqlite?

Ora però mi sono bloccato qui...riporto il logcat
Codice: [Seleziona]
D/AndroidRuntime(  461): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime(  461): CheckJNI is ON
D/AndroidRuntime(  461): --- registering native functions ---
I/ActivityManager(   73): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=it.unipd.dei.es1011.droidgrill/.Events }
I/ActivityManager(   73): Start proc it.unipd.dei.es1011.droidgrill for activity it.unipd.dei.es1011.droidgrill/.Events: pid=468 uid=10036 gids={1015}
D/AndroidRuntime(  461): Shutting down VM
D/dalvikvm(  461): Debugger has detached; object registry had 1 entries
I/AndroidRuntime(  461): NOTE: attach of thread 'Binder Thread #3' failed
D/AndroidRuntime(  468): Shutting down VM
W/dalvikvm(  468): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime(  468): FATAL EXCEPTION: main
E/AndroidRuntime(  468): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.unipd.dei.es1011.droidgrill/it.unipd.dei.es1011.droidgrill.Events}: java.lang.NullPointerException
E/AndroidRuntime(  468):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime(  468):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(  468):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(  468):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(  468):         at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  468):         at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  468):         at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  468):         at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  468):         at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  468):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  468):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  468):         at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  468): Caused by: java.lang.NullPointerException
E/AndroidRuntime(  468):         at it.unipd.dei.es1011.droidgrill.Events.onCreate(Events.java:42)
E/AndroidRuntime(  468):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(  468):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(  468):         ... 11 more
W/ActivityManager(   73):   Force finishing activity it.unipd.dei.es1011.droidgrill/.Events
W/ActivityManager(   73): Activity pause timeout for HistoryRecord{45073710 it.unipd.dei.es1011.droidgrill/.Events}
W/ActivityManager(   73): Activity destroy timeout for HistoryRecord{45073710 it.unipd.dei.es1011.droidgrill/.Events}
D/SntpClient(   73): request time failed: java.net.SocketException: Address family not supported by protocol



L'errore è questo immagino  ;-)
E/AndroidRuntime(  468): Caused by: java.lang.NullPointerException
E/AndroidRuntime(  468):    at it.unipd.dei.es1011.droidgrill.Events.onCreate(Events.java:42)


la riga 42 di Events.java è questa:
Codice: [Seleziona]
eventsLv.setAdapter(adapter);     
(il codice intero della classe è presente nei post precedenti)



Scusate la struttura di scatole, ma sono alle prime armi con la programmazione Android  8-) :-o

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:inserire dati in ListView da adapter
« Risposta #9 il: 08 Maggio 2011, 00:03:15 CEST »
0
Inizia a chiederti: cos'è quell'eccezione? Da cosa può essere causata? E vai a ritroso fino a quando trovi la soluzione.
Se per ogni cosa ti diciamo noi cosa fare non impari più ;)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:inserire dati in ListView da adapter
« Risposta #10 il: 09 Maggio 2011, 12:50:30 CEST »
0
Allora: sembra che io vado ad accedere a celle degli array che non sono inizializzati.... ma il fatto è che gli array gli inizializzo al volo!
Codice: [Seleziona]
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        setContentView(R.layout.main);
        ListView eventsLv=(ListView)findViewById(R.id.eventsLv); //carichiamo la ListView
       
        AppDB db=new AppDB(getApplicationContext());
        db.open();  //apriamo il db
       
        if(db.fetchEvents().getCount()==0){  //inserimento dati
           
                db.insertEvent("Grigliata", "Piave");
                db.insertEvent("Serata alcorica", "Villa di Mohammed");
                db.insertEvent("PikNic", "Bosco");
                db.insertEvent("Pranzo", "Da Cicciobenzina");
                db.insertEvent("Uscita sulle Dolomiti ", "Cortina");
        }
       
        Cursor c=db.fetchEvents(); // recupero tutta la lista degli eventi
        startManagingCursor(c);
       
        SimpleCursorAdapter adapter=new SimpleCursorAdapter( //semplice adapter per i cursor
                        this,
                        R.layout.line_event, //il layout di ogni riga/prodotto
                        c,
                        new String[]{AppDB.eveName}, //queste colonne (vado a pescarle nel database)
                        new int[]{R.id.eveName}); //in queste views (vado a pescarle tra le view)
       
        eventsLv.setAdapter(adapter); //la listview ha questo adapter
       
        db.close();


Nessuno sa aiutarmi? Sono a un passo dal concludere, ma non riesco a darci fuori...  o_O

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:inserire dati in ListView da adapter
« Risposta #11 il: 09 Maggio 2011, 14:18:59 CEST »
0
per risolvere i bug basta attivare il debugger (F11 su eclipse) e vedere in che linea si ferma (metti un po' di breakpoint nei punti critici e con 1 po' di tentativi lo trovi)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:inserire dati in ListView da adapter
« Risposta #12 il: 09 Maggio 2011, 14:28:31 CEST »
0
Allora: sembra che io vado ad accedere a celle degli array che non sono inizializzati.... ma il fatto è che gli array gli inizializzo al volo!

In base a cosa lo dici?

Se
Codice (Java): [Seleziona]
eventsLv.setAdapter(adapter);
genera una NullPointerException vuol dire che è l'oggetto eventsLv a essere a null. Se è a null significa che il metodo findViewById  ha ritorna null, ovvero non ha trovato la risorsa che gli hai passato come parametro. Risultato: Controlla il layout.




Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:inserire dati in ListView da adapter
« Risposta #13 il: 09 Maggio 2011, 15:43:56 CEST »
0
Grazie 1000!
Ho risolto comunque, avevo sbagliato di setContentView(.....);

Grazie a tutti della pazienza!!! :D :-P