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
Post a Comment