Delete Database and ListView in Android -


i have problem delete database using listview. can delete database, when open again listview error. got 2 class userlist.class , mysqlitehelpre.class. in userlist.class, extend activity , add method onitemlongclick.

06-03 09:13:43.880  18615-18615/com.sinergi.los.activity e/androidruntime﹕ fatal exception: main process: com.sinergi.los.activity, pid: 18615 java.lang.runtimeexception: unable start activity componentinfo{com.sinergi.los.activity/com.sinergi.los.activity.userlist}: android.database.cursorindexoutofboundsexception: index 0 requested, size of 0         @ android.app.activitythread.performlaunchactivity(activitythread.java:2544)         @ android.app.activitythread.handlelaunchactivity(activitythread.java:2603)         @ android.app.activitythread.access$900(activitythread.java:174)         @ android.app.activitythread$h.handlemessage(activitythread.java:1321)         @ android.os.handler.dispatchmessage(handler.java:102)         @ android.os.looper.loop(looper.java:146)         @ android.app.activitythread.main(activitythread.java:5752)         @ java.lang.reflect.method.invokenative(native method)         @ java.lang.reflect.method.invoke(method.java:515)         @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1291)         @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1107)         @ dalvik.system.nativestart.main(native method)  caused by: android.database.cursorindexoutofboundsexception: index 0 requested, size of 0         @ android.database.abstractcursor.checkposition(abstractcursor.java:426)         @ android.database.abstractwindowedcursor.checkposition(abstractwindowedcursor.java:136)         @ android.database.abstractwindowedcursor.getlong(abstractwindowedcursor.java:74)         @ com.sinergi.los.dao.infopokokdao.cursortoinfopokok(infopokokdao.java:75)         @ com.sinergi.los.dao.infopokokdao.getbyid(infopokokdao.java:174)         @ com.sinergi.los.dao.permohonankreditdao.cursortoformpk(permohonankreditdao.java:56)         @ com.sinergi.los.dao.permohonankreditdao.getallformpk(permohonankreditdao.java:90)         @ com.sinergi.los.activity.userlist.oncreate(userlist.java:102)         @ android.app.activity.performcreate(activity.java:5600)         @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1093)         @ android.app.activitythread.performlaunchactivity(activitythread.java:2508) 

this listview code

listadapter = new arrayadapter<string>(this, r.layout.activity_row_list, userlist);      mainlistview.setadapter(listadapter);      mainlistview.setonitemlongclicklistener(new adapterview.onitemlongclicklistener() {         @override         public boolean onitemlongclick(adapterview<?> parent, view view, final int position, long id) {              final alertdialog.builder b = new alertdialog.builder(userlist.this);             b.seticon(android.r.drawable.ic_dialog_alert);             b.setmessage("ingin menghapus data?");             b.setpositivebutton("ya",                     new dialoginterface.onclicklistener() {                         public void onclick(dialoginterface dialog, int whichbutton) {                              idtable = idlist.get(position);                              mysqlitehelper db=new mysqlitehelper(getapplicationcontext());                             db.delete("" + idtable);                             userlist.remove(position);                             userlist.this.listadapter.notifydatasetchanged();                          }                     });             b.setnegativebutton("tidak",                     new dialoginterface.onclicklistener() {                         public void onclick(dialoginterface dialog, int whichbutton) {                             dialog.cancel();                         }                     });              b.show();             return true;         }     }); } 

this delete code in dbhelper

public void delete(string id) {     sqlitedatabase db = this.getreadabledatabase();     db.delete(table_info_pokok, column_id + "=?", new string[]{id});     db.close(); } 

root cause here:

caused by: android.database.cursorindexoutofboundsexception: index 0 requested, size of 0 

your table in database empty (as result, cursor empty), trying in it. solution check cursor.movetofirst() before query anything.

if (cursor != null && cursor.movetofirst()) {     // cursor.getlong... } 

Comments