Android+SQLite数据库实现的生词记事本功能实例
程序员文章站
2023-12-19 10:11:52
本文实例讲述了android+sqlite数据库实现的生词记事本功能。分享给大家供大家参考,具体如下:
主activity命名为
dict:
代码如下:
p...
本文实例讲述了android+sqlite数据库实现的生词记事本功能。分享给大家供大家参考,具体如下:
主activity命名为
dict:
代码如下:
package example.com.myapplication; import android.app.activity; import android.content.intent; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.toast; import java.util.arraylist; import java.util.hashmap; import java.util.map; public class dict extends activity { mydatabasehelper dbhelper; button insert = null; button search = null; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // 创建mydatabasehelper对象,指定数据库版本为1,此处使用相对路径即可, // 数据库文件自动会保存在程序的数据文件夹的databases目录下。 dbhelper = new mydatabasehelper(this , "mydict.db3" , 1); insert = (button)findviewbyid(r.id.insert); search = (button)findviewbyid(r.id.search); insert.setonclicklistener(new view.onclicklistener() { @override public void onclick(view source) { //获取用户输入 string word = ((edittext)findviewbyid(r.id.word)) .gettext().tostring(); string detail = ((edittext)findviewbyid(r.id.detail)) .gettext().tostring(); //插入生词记录 insertdata(dbhelper.getreadabledatabase() , word , detail); //显示提示信息 toast.maketext(dict.this, "添加生词成功!" , toast.length_short) .show(); } }); search.setonclicklistener(new view.onclicklistener() { @override public void onclick(view source) { // 获取用户输入 string key = ((edittext) findviewbyid(r.id.key)).gettext() .tostring(); // 执行查询 cursor cursor = dbhelper.getreadabledatabase().rawquery( "select * from dict where word like ? or detail like ?", new string[]{"%" + key + "%" , "%" + key + "%"}); //创建一个bundle对象 bundle data = new bundle(); data.putserializable("data", convercursortolist(cursor)); //创建一个intent intent intent = new intent(dict.this , resultactivity.class); intent.putextras(data); //启动activity startactivity(intent); } }); } protected arraylist<map<string ,string>> convercursortolist(cursor cursor) { arraylist<map<string,string>> result = new arraylist<map<string ,string>>(); //遍历cursor结果集 while(cursor.movetonext()) { //将结果集中的数据存入arraylist中 map<string, string> map = new hashmap<string,string>(); //取出查询记录中第2列、第3列的值 map.put("word" , cursor.getstring(1)); map.put("detail" , cursor.getstring(2)); result.add(map); } return result; } private void insertdata(sqlitedatabase db , string word , string detail) { //执行插入语句 db.execsql("insert into dict values(null , ? , ?)" , new string[]{word , detail}); } @override public void ondestroy() { super.ondestroy(); //退出程序时关闭mydatabasehelper里的sqlitedatabase if (dbhelper != null) { dbhelper.close(); } } }
他的布局文件activity_main代码如下:
<!--?xml version="1.0" encoding="utf-8"?--> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <edittext android:id="@+id/word" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/input"/> <edittext android:id="@+id/detail" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/input" android:lines="3"/> <button android:id="@+id/insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/insert"/> <edittext android:id="@+id/key" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/record"/> <button android:id="@+id/search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/search"/> <listview android:id="@+id/show" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </linearlayout>
另一个需要跳转的activity命名为:
resultactivity
具体代码如下:
package example.com.myapplication; import android.app.activity; import android.content.intent; import android.os.bundle; import android.widget.listview; import android.widget.simpleadapter; import java.util.list; import java.util.map; public class resultactivity extends activity { @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.popup); listview listview = (listview)findviewbyid(r.id.show); intent intent = getintent(); //获取该intent所携带的数据 bundle data = intent.getextras(); //从bundle数据包中取出数据 @suppresswarnings("unchecked") list<map<string,string>> list = (list<map<string ,string>>)data.getserializable("data"); //将list封装成simpleadapter simpleadapter adapter = new simpleadapter( resultactivity.this , list , r.layout.ine , new string[]{"word" , "detail"} , new int[]{r.id.my_title , r.id.my_content}); //填充listview listview.setadapter(adapter); } }
他的布局文件命名为popup: 代码如下:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragment"> <textview android:id="@+id/my_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <textview android:id="@+id/my_content" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout>
listview的子项目布局命名为ine:
代码如下:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragment"> <textview android:id="@+id/my_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <textview android:id="@+id/my_content" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout>
最后数据库帮助类命名为:
mydatabasehelper:
代码如下:
package example.com.myapplication; import android.content.context; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; public class mydatabasehelper extends sqliteopenhelper { final string create_table_sql = "create table dict(_id integer primary key autoincrement , word , detail)"; public mydatabasehelper(context context, string name, int version) { super(context, name, null, version); } @override public void oncreate(sqlitedatabase db) { // 第一个使用数据库时自动建表 db.execsql(create_table_sql); } @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { system.out.println("--------onupdate called--------" + oldversion + "--->" + newversion); } }
更多关于android相关内容感兴趣的读者可查看本站专题:《android操作sqlite数据库技巧总结》、《android数据库操作技巧总结》、《android编程之activity操作技巧总结》、《android文件操作技巧汇总》、《android开发入门与进阶教程》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。