SQLiteOpenHelper使用之英文生词本
2016-09-10 10:25
417 查看
界面效果如下:布局代码如下:<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.sqliteopenhelper.MainActivity"
android:orientation="vertical"><EditText
android:id="@+id/et_word"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="input the word"/>
<EditText
android:id="@+id/et_explaination"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入单词解释 "/>
<Button
android:id="@+id/btn_insert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="insert"/>
<EditText
android:id="@+id/et_search_content"
android:layout_width="match_parent"
android:layout_height="wrap_content" /><Button
android:id="@+id/btn_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="search"/>
</LinearLayout></span>
第一步:创建一个MyDataBaseHelper类,继承SQLiteOpenHelper类,此类用于建立数据库(表),代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.sqliteopenhelper.MainActivity"
android:orientation="vertical"><EditText
android:id="@+id/et_word"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="input the word"/>
<EditText
android:id="@+id/et_explaination"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入单词解释 "/>
<Button
android:id="@+id/btn_insert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="insert"/>
<EditText
android:id="@+id/et_search_content"
android:layout_width="match_parent"
android:layout_height="wrap_content" /><Button
android:id="@+id/btn_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="search"/>
</LinearLayout></span>
第一步:创建一个MyDataBaseHelper类,继承SQLiteOpenHelper类,此类用于建立数据库(表),代码如下:
<span style="font-size:14px;">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, SQLiteDatabase.CursorFactory factory, 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("onUpgrade Called-------oldVersion:"+ oldVersion+"newVersion:"+newVersion); } }</span>MainActivity代码如下:
<span style="font-size:14px;">public class MainActivity extends Activity { private MyDataBaseHelper helper; private Button btn_insert,btn_search; private EditText et_word,et_explanation,searchContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper = new MyDataBaseHelper(this,"myDictionary.db3",null,1); btn_insert = (Button) findViewById(R.id.btn_insert); btn_search = (Button) findViewById(R.id.btn_search); et_word = (EditText) findViewById(R.id.et_word); searchContent = (EditText) findViewById(R.id.et_search_content); et_explanation = (EditText) findViewById(R.id.et_explaination); btn_insert.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String word = et_word.getText().toString(); String detail = et_explanation.getText().toString(); // helper.getReadableDataBase是用读写的方式打开数据库 insertData(helper.getReadableDatabase(),word,detail); Toast.makeText(MainActivity.this, "添加单词成功!", Toast.LENGTH_SHORT).show(); } }); btn_search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String key = searchContent.getText().toString(); Cursor cursor = helper.getReadableDatabase().rawQuery("select * from dict where word " + "like ? or detail like ?",new String[]{"%"+key+"%","%"+key+"%"}); Bundle data = new Bundle(); data.putSerializable("data", (Serializable) converCursorToList(cursor)); Intent intent = new Intent(MainActivity.this,ResultActivity.class); intent.putExtras(data); startActivity(intent); } }); } private void insertData(SQLiteDatabase db,String word,String detail){ db.execSQL("insert into dict values(null,?,?)",new String[]{word,detail}); } private List<Map<String,String>> converCursorToList(Cursor cursor){ ArrayList<Map<String,String>> wordList = new ArrayList<Map<String,String>>(); while(cursor.moveToNext()){ Map<String,String> map = new HashMap<String,String>(); map.put("word",cursor.getString(1)); map.put("detail",cursor.getString(2)); wordList.add(map); } return wordList; } }</span><span style="font-size: 12pt;"> </span>ResultActivity代码如下:
<span style="font-size:14px;">public class ResultActivity extends Activity { ListView searchedList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.resultlist); searchedList = (ListView) findViewById(R.id.searched_list); Intent intent = getIntent(); Bundle data = intent.getExtras(); ArrayList<Map<String,String>> list =(ArrayList<Map<String,String>>) data.getSerializable("data"); SimpleAdapter adapter = new SimpleAdapter(ResultActivity.this,list, R.layout.result, new String[]{"word","detail"},new int[]{R.id.tv_word,R.id.tv_detail}); searchedList.setAdapter(adapter); } }</span>注:将ResultActivity设置为对话框模式的Activity,在AndroidManifest.xml中设置:
<activity android:name=".ResultActivity" android:theme="@style/Theme.AppCompat.Dialog"></activity>在ResultActivity中需要再新建2个xml布局文件resultlist.xml和result.xml
SimpleAdapter adapter = new SimpleAdapter(context,List<Map<String,?>>,int resource,String from[],int to[]);其中resource是要填充的布局文件,from[]对应list中存入的key,to[]对应布局文件中的组件的id,切记使用listView.setAdapter(adapeter)方法使listView按resource中的样式加载list中的数据
界面查询效果如下:
相关文章推荐
- Android SQLiteOpenHelper的使用心得
- 如何使用SQLiteOpenHelper
- android开发(24)使用SQLiteOpenHelper的onUpgrade实现数据库版本升级
- android数据库编程----SqLiteOpenHelper的使用
- SQLite使用方法 SQLiteOpenHelper操作
- 使用SQLiteOpenHelper对数据库进行版本管理
- 使用SQLiteOpenHelper
- MonoDroid学习笔记(十一)—— 使用SQLiteOpenHelper实现简易备忘录
- Android--类--SQLiteOpenHelper使用示例--01
- Android SQLiteOpenHelper的使用心得
- 使用SQLiteOpenHelper
- Android 使用SQLiteOpenHelper对数据库进行版本管理
- MonoDroid学习笔记(十一)—— 使用SQLiteOpenHelper实现简易备忘录
- Android如何使用SQLiteOpenHelper
- SQLiteOpenHelper的使用范例
- 使用SQLiteOpenHelper获取用于操作数据库的SQLiteDatabase实例
- 使用SQLiteOpenHelper获取用于操作数据库的SQLiteDatabase实例
- android SQLiteOpenHelper使用示例
- MonoDroid学习笔记(十一)—— 使用SQLiteOpenHelper实现简易备忘录
- SQLiteOpenHelper的使用