单词本实现效果
继承自SQLiteOpenHelper的MyDataBaseHelper类
1 package com.dj.wordsbookdemo; 2 3 import android.content.Context; 4 import android.database.sqlite.SQLiteDatabase; 5 import android.database.sqlite.SQLiteDatabase.CursorFactory; 6 import android.database.sqlite.SQLiteOpenHelper; 7 8 public class MyDataBaseHelper extends SQLiteOpenHelper { 9 10 11 public MyDataBaseHelper(Context context, String name, 12 CursorFactory factory, int version) { 13 super(context, name, factory, version); 14 15 } 16 @Override 17 public void onCreate(SQLiteDatabase db) { 18 db.execSQL("CREATE TABLE IF NOT EXISTS words"+"(_id INTEGER PRIMARY KEY AUTOINCREMENT,word VARCHAR(20),mean VARCHAR(300))"); 19 } 20 21 @Override 22 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 23 24 } 25 26 }
主文件
1 import android.app.Activity; 2 import android.content.ContentValues; 3 import android.database.Cursor; 4 import android.database.sqlite.SQLiteDatabase; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.widget.EditText; 8 import android.widget.ListView; 9 import android.widget.SimpleAdapter; 10 import android.widget.SimpleCursorAdapter; 11 12 public class MainActivity extends Activity { 13 private SQLiteDatabase db; 14 private EditText et1, et2; 15 private ListView listview; 16 private MyDataBaseHelper helper; 17 String word; 18 String mean; 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) { 22 super.onCreate(savedInstanceState); 23 setContentView(R.layout.activity_main); 24 et1 = (EditText) findViewById(R.id.et1); 25 et2 = (EditText) findViewById(R.id.et2); 26 listview = (ListView) findViewById(R.id.listView1); 27 28 helper=new MyDataBaseHelper(this, "sql.db", null, 1); 29 db = helper.getWritableDatabase(); 30 31 inflater(); 32 } 33 34 public void addWords(View v) { 35 word = et1.getText().toString(); 36 mean = et2.getText().toString(); 37 //添加单词的时候如果存在相同的,单词的意思被替换为本次的。 38 if (db.query("words", null, "word=?", new String[]{word}, null, null, null).getCount()>0) { 39 //execSQL()方法 40 db.execSQL("update words set mean='"+mean+"' where word='"+word+"'"); 41 //db.update()方法 42 /*ContentValues values = new ContentValues(); 43 values.put("mean", mean); 44 db.update("words", values, "word=?", new String[] { word });*/ 45 }else{ 46 47 ContentValues values = new ContentValues(); 48 values.put("word", word); 49 values.put("mean", mean); 50 db.insert("words", null, values); 51 } 52 //添加数据后就刷新listview的内容 53 inflater(); 54 } 55 56 //删除按钮监听器 57 public void deleteWords(View v) { 58 word = et1.getText().toString(); 59 if (word.equals("")) { 60 et1.setError("请输入要删除的单词"); 61 } 62 String[] whereArgs={word}; 63 db.delete("words", "word=?", whereArgs); 64 //删除数据后刷新listview的内容 65 inflater(); 66 } 67 //查询按钮监听器 68 public void findWords(View v){ 69 word = et1.getText().toString(); 70 //根据单词查找数据 71 String sql="select * from words where word=?"; 72 Cursor cursor = db.rawQuery(sql, new String[]{word}); 73 SimpleCursorAdapter adapter=new SimpleCursorAdapter(MainActivity.this, R.layout.data, cursor, new String[]{"word","mean"}, new int[]{R.id.textView1, R.id.textView2},SimpleCursorAdapter.IGNORE_ITEM_VIEW_TYPE); 74 listview.setAdapter(adapter); 75 } 76 77 //定义一个inflater()方法用于及时的刷新数据 78 public void inflater() { 79 String sql = "select * from words"; 80 Cursor cursor = db.rawQuery(sql, null); 81 SimpleCursorAdapter adapter = new SimpleCursorAdapter( 82 MainActivity.this, R.layout.data, cursor, new String[] {"word", "mean" }, new int[] { R.id.textView1,R.id.textView2 }, 83 SimpleCursorAdapter.IGNORE_ITEM_VIEW_TYPE); 84 listview.setAdapter(adapter); 85 } 86 87 }
main.xml文件
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 android:paddingBottom="@dimen/activity_vertical_margin" 7 android:paddingLeft="@dimen/activity_horizontal_margin" 8 android:paddingRight="@dimen/activity_horizontal_margin" 9 android:paddingTop="@dimen/activity_vertical_margin" 10 tools:context=".MainActivity" > 11 12 <EditText 13 android:id="@+id/et1" 14 android:layout_width="match_parent" 15 android:layout_height="wrap_content" 16 android:hint="单词" /> 17 18 <EditText 19 android:id="@+id/et2" 20 android:layout_width="match_parent" 21 android:layout_height="wrap_content" 22 android:hint="释意" /> 23 24 <LinearLayout 25 android:layout_width="match_parent" 26 android:layout_height="wrap_content" 27 android:gravity="center_horizontal" > 28 29 <Button 30 android:layout_width="wrap_content" 31 android:layout_height="wrap_content" 32 android:onClick="addWords" 33 android:text="添加生词" /> 34 35 <Button 36 android:layout_width="wrap_content" 37 android:layout_height="wrap_content" 38 android:onClick="deleteWords" 39 android:text="删除单词" /> 40 41 <Button 42 android:id="@+id/button1" 43 android:layout_width="wrap_content" 44 android:layout_height="wrap_content" 45 android:onClick="findWords" 46 android:text="查找单词" /> 47 </LinearLayout> 48 49 <ListView 50 android:id="@+id/listView1" 51 android:layout_width="match_parent" 52 android:layout_height="match_parent" > 53 </ListView> 54 55 </LinearLayout>
data.xml文件,simpcursoadapter用到
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <LinearLayout 8 android:layout_width="match_parent" 9 android:layout_height="wrap_content" > 10 11 <TextView 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:text="单词:" /> 15 16 <TextView 17 android:id="@+id/textView1" 18 android:layout_width="wrap_content" 19 android:layout_height="wrap_content" /> 20 </LinearLayout> 21 22 <LinearLayout 23 android:layout_width="match_parent" 24 android:layout_height="wrap_content" > 25 26 <TextView 27 android:layout_width="wrap_content" 28 android:layout_height="wrap_content" 29 android:text="意思:" /> 30 31 <TextView 32 android:id="@+id/textView2" 33 android:layout_width="wrap_content" 34 android:layout_height="wrap_content" /> 35 </LinearLayout> 36 37 </LinearLayout>
效果图