android - Cursor and Adapter -


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