I've been beating my head around trying to populate a ListView with data from an SQLite database and can't seem to figure it out. I've read countless tutorials and equally countless posts here, but I'm obviously not getting something critical. Was hoping someone could give me a hint as to why the following two pieces of code aren't working together, or if I should be looking at something else entirely. Any help would be appreciated. The result I'm getting is a force close.
Method that initiates populating ListView object
public void displayNurseRoster(){ listView = (ListView) findViewById(R.id.list); // create instance of DbCommunicator DbCommunicator rosterView = new DbCommunicator(this); // open instance rosterView.open(); // instantiate SimpleCursorAdapter instance and set value SimpleCursorAdapter cursorAdapter; cursorAdapter = rosterView.getRosterListViewAdapter(this); // close database instance rosterView.close(); // set adapter to listView listView.setAdapter(cursorAdapter); } Method that returns SimpleCursorAdapter:
public SimpleCursorAdapter getRosterListViewAdapter (Context context) { // method variables int[] to = new int[] {R.id.rosterListLname}; // used ArrayList because of unpredictability of array length List<String> dataArray = new ArrayList<String>(); String[] columns = new String[] {KEY_NURSE_ROWID, KEY_LNAME}; // create cursor Cursor cursor = sqldb.query(NURSE_TABLE, columns, null, null, null, null, KEY_LNAME); int iLname = cursor.getColumnIndex(KEY_LNAME); cursor.moveToFirst(); String result = ""; while(!cursor.isAfterLast()){ result = result + cursor.getString(iLname) + "\n"; dataArray.add(result); } // convert ArrayList to String array for use with SimpleCursorAdapter String [] from = (String[]) dataArray.toArray(); SimpleCursorAdapter adapter = new SimpleCursorAdapter(context, R.layout.edit_roster, cursor, from, to); return adapter; }