quando lancio l'activity ho questo errore:
codice:
08-02 17:21:51.529: E/AndroidRuntime(1521): java.lang.RuntimeException: Unable to start activity ComponentInfo{le.mie.password/le.mie.password.ElencoPc}: java.lang.IllegalArgumentException: column '_id' does not exist
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.os.Handler.dispatchMessage(Handler.java:99)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.os.Looper.loop(Looper.java:137)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.app.ActivityThread.main(ActivityThread.java:5041)
08-02 17:21:51.529: E/AndroidRuntime(1521): at java.lang.reflect.Method.invokeNative(Native Method)
08-02 17:21:51.529: E/AndroidRuntime(1521): at java.lang.reflect.Method.invoke(Method.java:511)
08-02 17:21:51.529: E/AndroidRuntime(1521): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-02 17:21:51.529: E/AndroidRuntime(1521): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-02 17:21:51.529: E/AndroidRuntime(1521): at dalvik.system.NativeStart.main(Native Method)
08-02 17:21:51.529: E/AndroidRuntime(1521): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.widget.CursorAdapter.init(CursorAdapter.java:168)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.widget.CursorAdapter.<init>(CursorAdapter.java:116)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:52)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:78)
08-02 17:21:51.529: E/AndroidRuntime(1521): at le.mie.password.ElencoPc.onCreate(ElencoPc.java:35)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.app.Activity.performCreate(Activity.java:5104)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-02 17:21:51.529: E/AndroidRuntime(1521): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
sembra che non trova il il campo "_ID " in realtà il campo non esiste nella tabella perchè il campo si chiama "_IDPC"
Non capisco perchè
Activity con l'errore:
codice:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.el_pc);
//otteniamo i risultati del database
Database d = new Database(getApplicationContext());
final Cursor c = d.ottieniProdottiPC(); //otteniamo i prodotti
startManagingCursor(c); //diamo il cursore in pasto al parser delle API di Android
//creiamo le associazioni tra campi e colonne
String from[] = {Script._IDPC,Script.NOME_UTENTE_PC,Script.PASSWORD_PC,Script.NOTE_PC};
int to[] = {R.id.tv_pci,R.id.tv_utente_pc,R.id.tv_password_pc,R.id.tv_note_pc};
//creiamo il SimpleAdapter che si occuperà di collegare i nostri dati alla listView
SimpleCursorAdapter sca = new SimpleCursorAdapter(this /*context*/,
R.layout.dettagli_pc /*specifichiamo il layout che vogliamo*/,
c /*il cursore che contiene i nostri dati*/,
from,to);
//lo associamo al layout
listaDb = (ListView) findViewById(R.id.list_p);
listaDb.setAdapter(sca);
listaDb.setClickable(true); //rendiamo cliccabile la lista
listaDb.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long idpc) {
//otteniamo le informazioni che ci servono
TextView txtIdpc = (TextView) v.findViewById(R.id.tv_pci);
String elemIdpcString = (String) txtIdpc.getText(); //otteniamo l'idpc che ci interessa
int elemIdpcInt = Integer.parseInt(elemIdpcString);
Database d = new Database(getApplicationContext());
d.cancellapc(elemIdpcInt); //cancelliamo l'elemento
d.close();
c.requery(); //aggiorniamo la listview
}
});
}
}