当前位置: 移动技术网 > 移动技术>移动开发>Android > Android+SQLite数据库实现的生词记事本功能实例

Android+SQLite数据库实现的生词记事本功能实例

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文实例讲述了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程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网