Android實(shí)現(xiàn)一個(gè)簡(jiǎn)單的單詞本
本文基于Java實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的單詞本安卓app,用的是SQLite數(shù)據(jù)庫(kù),包括布局文件、源碼及實(shí)現(xiàn)圖。
布局設(shè)計(jì)
單詞本主界面
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".AddDanciActivity"> <EditText android:id="@+id/addword_edit" android:layout_width="match_parent" android:layout_height="60dp" android:layout_marginTop="20dp" android:hint="單詞:" android:textColor="@android:color/black" android:textColorHint="#DCDCDC" android:textSize="30dp" /> <EditText android:id="@+id/fanyiword_edit" android:layout_width="match_parent" android:layout_height="60dp" android:hint="解釋:" android:textColor="@android:color/black" android:textColorHint="#DCDCDC" android:textSize="30dp" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom = "true" android:layout_margin="5dp"> <ListView android:id="@+id/add_list" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="@android:color/black" android:textColorHint="#DCDCDC" android:textSize="30dp" android:layout_above="@id/lineLayout" /> <LinearLayout android:layout_height="50dp" android:layout_width="match_parent" android:id="@+id/lineLayout" android:layout_alignParentBottom="true" android:orientation="horizontal" android:gravity="center_horizontal" > <Button android:layout_width="100dp" android:layout_height="50dp" android:id="@+id/add_btn" android:text="添加" /> <Button android:layout_width="100dp" android:layout_height="50dp" android:layout_centerHorizontal="true" android:id="@+id/shanchu_btn" android:layout_gravity="center_vertical" android:text="刪除" /> <Button android:layout_width="100dp" android:layout_height="50dp" android:id="@+id/quxiao_btn" android:layout_gravity="right" android:text="取消" /> </LinearLayout> </RelativeLayout> </LinearLayout>
代碼
AddDanciActivity.java
單詞本主界面的Activity
import androidx.appcompat.app.AppCompatActivity; import android.content.ContentValues; 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.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class AddDanciActivity extends AppCompatActivity { private EditText wordedit; private EditText yisiedit; private Button add_btn; private Button quxiao_btn; private Button shanchu_btn; private ListView listview; private DBOpenHelper dbOpenHelper;//聲明 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_danci); dbOpenHelper = new DBOpenHelper(AddDanciActivity.this, "db_dict", null, 1);//實(shí)例化,創(chuàng)建數(shù)據(jù)庫(kù) wordedit = (EditText) findViewById(R.id.addword_edit); yisiedit = (EditText) findViewById(R.id.fanyiword_edit); listview = (ListView) findViewById(R.id.add_list); add_btn = (Button) findViewById(R.id.add_btn); quxiao_btn = (Button) findViewById(R.id.quxiao_btn); shanchu_btn = (Button) findViewById(R.id.shanchu_btn); quxiao_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(AddDanciActivity.this, "返回單詞本主界面", Toast.LENGTH_SHORT).show(); finish(); } }); shanchu_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String word = wordedit.getText().toString(); String ys = yisiedit.getText().toString(); if (word.equals("")) { Toast.makeText(AddDanciActivity.this, "填寫(xiě)的單詞為空", Toast.LENGTH_SHORT).show(); } else { deleteData(dbOpenHelper.getReadableDatabase(), word); Toast.makeText(AddDanciActivity.this, "刪除成功", Toast.LENGTH_SHORT).show(); } } }); add_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String word = wordedit.getText().toString(); String ys = yisiedit.getText().toString(); if (word.equals("") || ys.equals("")) { Toast.makeText(AddDanciActivity.this, "填寫(xiě)的單詞或解釋為空", Toast.LENGTH_SHORT).show(); } else { insertData(dbOpenHelper.getReadableDatabase(), word, ys);//插入生詞 Toast.makeText(AddDanciActivity.this, "添加生詞成功", Toast.LENGTH_SHORT).show(); renew(); } } }); } //插入數(shù)據(jù)的方法 private void insertData(SQLiteDatabase sqLiteDatabase, String word, String ys) { ContentValues values = new ContentValues(); values.put("word", word);//保存單詞 values.put("detail", ys); sqLiteDatabase.insert("tb_dict", null, values);//執(zhí)行插入操作 renew(); } private void deleteData(SQLiteDatabase sqLiteDatabase, String word) { ContentValues values = new ContentValues(); String[] args = {String.valueOf(word)}; sqLiteDatabase.delete("tb_dict", "word=?", args);//執(zhí)行刪除操作 renew(); } @Override protected void onDestroy() { super.onDestroy(); if (dbOpenHelper != null) { dbOpenHelper.close();//關(guān)閉 } } public void renew() { Cursor cursor = dbOpenHelper.getReadableDatabase().query("tb_dict", null, null, null, null, null, null); ArrayList<Map<String, String>> resultList = new ArrayList<Map<String, String>>(); while (cursor.moveToNext()) { Map<String, String> map = new HashMap<String, String>(); map.put("word", cursor.getString(1)); map.put("interpret", cursor.getString(2)); resultList.add(map); } if (resultList == null || resultList.size() == 0) { Toast.makeText(AddDanciActivity.this, "很遺憾,沒(méi)有相關(guān)記錄!", Toast.LENGTH_SHORT).show(); } else { SimpleAdapter simpleAdapter = new SimpleAdapter(AddDanciActivity.this, resultList, R.layout.item, new String[]{"word", "interpret" }, new int[]{R.id.textView, R.id.textView2}); listview.setAdapter(simpleAdapter); } } @Override protected void onStart() { super.onStart(); renew(); } }
DBOpenHelper.java
用到的是SQLite數(shù)據(jù)庫(kù),Android自帶了一種輕量級(jí)數(shù)據(jù)庫(kù),使用非常方便。
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import androidx.annotation.Nullable; public class DBOpenHelper extends SQLiteOpenHelper { final String CREATE_TABLE_SQL = "create table tb_dict (_id integer primary key autoincrement,word,detail)";//定義創(chuàng)建表的 public DBOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, null, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_SQL);//創(chuàng)建單詞的數(shù)據(jù)表 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.i("詞典", "--版本更新" + oldVersion + "-->" + newVersion); } }
效果圖
總結(jié)
到此這篇關(guān)于Android實(shí)現(xiàn)一個(gè)簡(jiǎn)單的單詞本的文章就介紹到這了,更多相關(guān)Android單詞本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android對(duì)話框自定義標(biāo)題 對(duì)話框標(biāo)題美化操作
這篇文章主要為大家詳細(xì)介紹了Android對(duì)話框自定義標(biāo)題的相關(guān)資料,如何對(duì)對(duì)話框標(biāo)題進(jìn)行美化操作,感興趣的小伙伴們可以參考一下2016-08-08通過(guò)WIFI(不用數(shù)據(jù)線)連接Android手機(jī)調(diào)試
本文主要介紹WIFI 鏈接手機(jī)調(diào)試,這里詳細(xì)介紹了WIFI 鏈接Android手機(jī)實(shí)現(xiàn)調(diào)試的過(guò)程,有需要的小伙伴可以參考下2016-08-08Android觸摸及手勢(shì)操作GestureDetector
這篇文章主要a為大家詳細(xì)介紹了Android觸摸及手勢(shì)操作GestureDetector的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-07Flutter?隊(duì)列任務(wù)的實(shí)現(xiàn)
本文主要介紹了Flutter?隊(duì)列任務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Android使用內(nèi)置WebView打開(kāi)TextView超鏈接的實(shí)現(xiàn)方法
這篇文章主要介紹了Android使用內(nèi)置WebView打開(kāi)TextView超鏈接的實(shí)現(xiàn)方法,文中給出了詳細(xì)的示例代碼,對(duì)各位Android開(kāi)發(fā)者們具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03Android Studio去除界面默認(rèn)標(biāo)題欄的方法
這篇文章主要介紹了Android Studio去除界面默認(rèn)標(biāo)題欄的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2007-09-09Android網(wǎng)絡(luò)通信的實(shí)現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了Android網(wǎng)絡(luò)通信的實(shí)現(xiàn)方式,四種實(shí)現(xiàn)網(wǎng)絡(luò)通信的方式供大家學(xué)習(xí),感興趣的小伙伴們可以參考一下2016-06-06Android 使用Vitamio打造自己的萬(wàn)能播放器(9)—— 在線播放 (在線電視)
本文主要介紹Android 使用Vitamio開(kāi)發(fā)播放器,實(shí)現(xiàn)在線電視播放,這里提供效果圖和實(shí)例代碼以便大家參考,2016-07-07Android實(shí)現(xiàn)彈出列表、單選、多選框
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)彈出列表、單選、多選框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10Android RecyclerView實(shí)現(xiàn)下拉刷新和上拉加載
這篇文章主要介紹了Android RecyclerView實(shí)現(xiàn)下拉刷新和上拉加載的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05