android - How can I get a static SQLite database to show up in my listView -
i'll start off listing code have far...
this main activity class:
public class sqlitedatabasemain extends activity { listview list; databasehelper helper; sqlitedatabase db; databaseadapter adapter; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); init(); } public void init() { helper = new databasehelper(this); list = (listview) findviewbyid(r.id.listview1); db = helper.getwritabledatabase(); helper.populategrocery(db); } } this databasehelper class:
public class databasehelper extends sqliteopenhelper { private static final string database_name = "grocerystoretest.db"; private static final string database_table = "grocerystoreitems"; private static final string grocery_key_name = "name"; private static final string grocery_key_type = "type"; private static final int schema_version = 1; sqlitedatabasemain sqlmain = new sqlitedatabasemain(); public databasehelper(context context) { super(context, database_name, null, schema_version); } @override public void oncreate(sqlitedatabase db) { db.execsql("create table " + database_table + " (_id integer primary key autoincrement, name text, type text);"); } @override public void onupgrade(sqlitedatabase db, int arg1, int arg2) { // db.execsql("drop table if exists " + database_name); } public void insert(string name, string type) { contentvalues cv = new contentvalues(); cv.put("name", name); cv.put("type", type); getwritabledatabase().insert(database_table, "name", cv); } public void update(string id, string name, string type) { contentvalues cv = new contentvalues(); string[] args = { id }; cv.put("name", name); cv.put("type", type); getwritabledatabase().update(database_table, cv, "_id=?", args); } public void delete(string id, string name, string type) { contentvalues cv = new contentvalues(); string[] args = { id }; cv.put("name", name); cv.put("type", type); getwritabledatabase().delete(database_table, "_id=?", args); } public void populategrocery(sqlitedatabase db) { arraylist<groceryobj> groceryarraylist; groceryarraylist = buildgroceryarraylist(); string insertstmt = null; (int = 0; < groceryarraylist.size(); i++) { insertstmt = "insert " + database_table + " (" + grocery_key_name + ", " + grocery_key_type + ") " + "values (\"" + groceryarraylist.get(i).getname() + "\", \"" + groceryarraylist.get(i).gettype() + "\");"; db.execsql(insertstmt); } } private arraylist<groceryobj> buildgroceryarraylist() { arraylist<groceryobj> al = new arraylist<groceryobj>(); documentbuilderfactory factory = documentbuilderfactory.newinstance(); try { context context; context = sqlmain.getapplicationcontext(); documentbuilder builder = factory.newdocumentbuilder(); inputstream raw = context.getassets().open("default_grocerystore.xml"); document dom = builder.parse(raw); element root = (element) dom.getdocumentelement(); nodelist groceryitems = ((document) root) .getelementsbytagname("grocery"); (int = 0; < groceryitems.getlength(); i++) { string name = null; string type = null; node item = groceryitems.item(i); nodelist groceryitem = item.getchildnodes(); (int j = 0; j < groceryitem.getlength(); j++) { node nodeitem = groceryitem.item(j); string nodename = nodeitem.getnodename(); if (nodename.equalsignorecase("name")) { name = nodeitem.getfirstchild().getnodevalue(); } else if (nodename.equalsignorecase("type")) { type = nodeitem.getfirstchild().getnodevalue(); } } al.add(new groceryobj(name, type)); } } catch (exception e) { e.printstacktrace(); } return al; } public string getname(cursor c) { return (c.getstring(1)); } public string gettype(cursor c) { return (c.getstring(3)); } } this groceryobj class:
public class groceryobj { private string name = ""; private string type = ""; public groceryobj(string name, string type) { this.name = name; this.type = type; } public string getname() { return (name); } public void setname(string name) { this.name = name; } public string gettype() { return (type); } public void settype(string type) { this.type = type; } } my databaseadapter class blank right now. need figure out!:
public class databaseadapter extends cursoradapter { public databaseadapter(context context, cursor c) { super(context, c); } @override public void bindview(view view, context context, cursor cursor) { } @override public view newview(context context, cursor cursor, viewgroup parent) { return null; } } then have xml file stores of grocery items name , type:
<?xml version="1.0" encoding="utf-8"?> <default_grocerystore> <grocery> <name>bread</name> <type>bakery</type> </grocery> <grocery> <name>rolls</name> <type>bakery</type> </grocery> <grocery> <name>juice</name> <type>beverages</type> </grocery> <grocery> <name>soda</name> <type>beverages</type> </grocery> </default_grocerystore> and have row.xml 2 textviews display name , type of each item in each row of listview.
my main.xml textview , listview.
what i'm stuck on adapter. ive used database adapters before insert rows database via edittexts , holder object ive never taken static database , had converted each row view via listview. have pointers on needed database viewed via listview?? appreciated because stumped here. ive been racking brain past few hours trying find out how this. help!
simpleadapter meant static data, performance may vary if going use dynamic data. other way use different type of adapter if want use dynamic data, such arrayadapter.
Comments
Post a Comment