can see have wrong cursor: data db not returned (at least screen blank). think problem. in ddms shows opens & closes db. not sure 'cursor databasecursor = null;' needs be. thnx!!
the activity:
private void displayresultlist() { cursor databasecursor = null; domainadapter databaselistadapter = new domainadapter(this, r.layout.list_item, databasecursor, new string[] { "label", "title", "description" }, new int[] { r.id.label, r.id.listtitle, r.id.caption }); databaselistadapter.notifydatasetchanged(); this.setlistadapter(databaselistadapter); } private void openandquerydatabase() { if (android.os.environment.getexternalstoragestate().equals( android.os.environment.media_mounted)) { extstoragedirectory = environment.getexternalstoragedirectory().tostring(); file dbfile = new file(extstoragedirectory + "/aero-technologies/flydroid/db/flydroid.db"); sqlitedatabase db = sqlitedatabase.openorcreatedatabase(dbfile, null); log.i("tag", "db opened"); try { db.rawquery("select * ac_list", null); } { if (db != null) log.i("tag", "db closed"); db.close(); } } else if (android.os.environment.getexternalstoragestate().equals( android.os.environment.media_unmounted)) { log.i("tag", "sdcard not writable/mounted"); alerts.sdcardmissing(this); } }
my adapter:
public class domainadapter extends simplecursoradapter{ private cursor datacursor; private layoutinflater minflater; public domainadapter(context context, int layout, cursor datacursor, string[] from, int[] to) { super(context, layout, datacursor, from, to); this.datacursor = datacursor; minflater = layoutinflater.from(context); } public view getview(int position, view convertview, viewgroup parent) { viewholder holder; if (convertview == null) { convertview = minflater.inflate(r.layout.list_item, null); holder = new viewholder(); holder.text1 = (textview) convertview.findviewbyid(r.id.label); holder.text2 = (textview) convertview.findviewbyid(r.id.listtitle); holder.text3 = (textview) convertview.findviewbyid(r.id.caption); convertview.settag(holder); } else { holder = (viewholder) convertview.gettag(); } datacursor.movetoposition(position); int label_index = datacursor.getcolumnindex("label"); string label = datacursor.getstring(label_index); int title_index = datacursor.getcolumnindex("title"); string title = datacursor.getstring(title_index); int description_index = datacursor.getcolumnindex("discription"); string description = datacursor.getstring(description_index); holder.text1.settext(label); holder.text2.settext(title); holder.text3.settext(description); return convertview; } static class viewholder { textview text1; textview text2; textview text3; } }
revised:
change displayresultlist method following (working):
private void displayresultlist() { if (android.os.environment.getexternalstoragestate().equals( android.os.environment.media_mounted)) { extstoragedirectory = environment.getexternalstoragedirectory() .tostring(); file dbfile = new file(extstoragedirectory + "/aero-technologies/flydroid/db/flydroid.db"); sqlitedatabase db = sqlitedatabase.openorcreatedatabase(dbfile, null); cursor databasecursor = db.rawquery("select * ac_list", null); domainadapter databaselistadapter = new domainadapter(this, r.layout.list_item, databasecursor, new string[] { "label", "title", "description" }, new int[] { r.id.label, r.id.listtitle, r.id.caption }); databaselistadapter.notifydatasetchanged(); this.setlistadapter(databaselistadapter); } else if (android.os.environment.getexternalstoragestate().equals( android.os.environment.media_unmounted)) { log.i("tag", "sdcard not writable/mounted"); alerts.sdcardmissing(this); } }
i think problem in
try { db.rawquery("select * ac_list", null); } { if (db != null) log.i("tag", "db closed"); db.close(); }
you closing query , query never saved databasecursor, maybe wanted was:
try { databasecursor = db.rawquery("select * ac_list", null); } catch(exception e) { if (db != null) log.i("tag", "db closed"); db.close(); }
i hope helps
Comments
Post a Comment