admin管理员组文章数量:1597400
本文目录
-
-
-
- 总体功能目标:
-
- 前期功能:
- 后期功能:
- 大致思路:
- 当前效果图:
- 开始编码:
-
- 词库:
- 选择题:
- 用到的基类、自定义Button、工具类
-
-
在使用背单词APP的过程中,我发现我就没专心背单词,而是想着:咦,这功能可以!唉?这个地方好像有点小BUG!这里为啥不加点这个功能?那里为啥不加点那个功能?然后我就点开了我的AndroidStudio,开始了接来下的编码之旅!(本文持续更新,感兴趣的小伙伴可收藏一波)
项目地址(GitHub):https://github/YJX666666/MyDictionary
总体功能目标:
前期功能:
添加单词:能够添加单词
词库管理:能显示词库所有单词、能删除以及修改单词
选择模式:两种模式(中 - 英 & 英 - 中),选项中有一个正确答案以及三个非正确答案,选择正确和不正确都有相应提示
填空模式:两种模式(中 - 英 & 英 - 中),填写正确和不正确都有相应提示
后期功能:
词库选择:软件内自带几种常用的词库,如四六级等等,选择后添加进当前词库
背诵记录:可以查看单词背诵情况,如:单词出现次数、正确次数、错误次数
智能化:通过背诵记录来智能筛选背诵的单词,如:更多地出现正确率低的单词以加深记忆
大致思路:
利用数据库来保存单词,每次添加单词就直接添加进数据库,选择题是获取四组数据,然后选一组作为当前的主角(当前考核的单词),其余三组作为非正确答案放在按钮上,填空题则比较简单,随机选取一组数据,然后给出单词(或翻译),让你在输入框中填写答案。后期功能思路暂时没有考虑,先把前期功能做完!
当前效果图:
开始编码:
词库:
先写一个SQWordsHelps继承自SQLiteOpenHelper,这里定义两个数据(WORD 和 CHINESE)
public class SQWordsHelper extends SQLiteOpenHelper {
public static final String WORD = "word";
public static final String DB_NAME = WORD + "s.db";
public static final String TABLE_NAME = WORD + "s";
public static final String CHINESE = "chinese";
public SQWordsHelper(Context context) {
super(context, DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + "(" + WORD + " text," + CHINESE + " text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
然后是添加数据的功能,也就是数据库中的 增
XML,Button我用的自己自定义的Button(文末符代码)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<EditText
android:id="@+id/edit_english"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:background="@drawable/edit_stroke"
android:gravity="center"
android:hint="@string/str_english"
android:padding="10dp"
android:singleLine="true"
android:textSize="22sp" />
<EditText
android:id="@+id/edit_chinese"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="20sp"
android:layout_marginRight="30dp"
android:background="@drawable/edit_stroke"
android:gravity="center"
android:hint="@string/str_chinese"
android:padding="10dp"
android:singleLine="true"
android:textSize="22sp" />
<com.yjx.androidword.MyView.MyFirstButton
android:id="@+id/btn_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="20sp"
android:layout_marginRight="30dp"
android:text="@string/str_addwords" />
</LinearLayout>
Java,BaseActivity是我写的基类(文末符代码)
点击按钮后进行判断,如果两个输入框中有空的则无反应(可以写一个提示),都不为空则调用插入数据的方法(initSQLiteData())
补充一个小知识点:数据库的 .insert()
方法是有返回值的,当返回 -1 时则为插入数据失败,返回其他则为插入数据成功(返回值是新插入数据所在的行数),这样我们就可以通过返回值来判断并提示用户插入结果
public class AddWordsActivity extends BaseActivity {
private android.widget.EditText mEditEnglish;
private android.widget.EditText mEditChinese;
private android.widget.Button mBtnAdd;
SQWordsHelper mSQHelper;
SQLiteDatabase mSQLiteDatabase;
ContentValues mContentValues;
@Override
protected void initData() {
mSQHelper = new SQWordsHelper(mContext);
mSQLiteDatabase = mSQHelper.getWritableDatabase();
mBtnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String english = mEditEnglish.getText().toString();
String chinese = mEditChinese.getText().toString();
if (!TextUtils.isEmpty(english) && !TextUtils.isEmpty(chinese)) {
initSQLiteData(english, chinese);
}
}
});
}
private void initSQLiteData(String english, String chinese) {
mContentValues = new ContentValues();
mContentValues.put(SQWordsHelper.WORD, english);
mContentValues.put(SQWordsHelper.CHINESE, chinese);
if (mSQLiteDatabase.insert(SQWordsHelper.TABLE_NAME, null, mContentValues) == -1) {
Toast.makeText(mContext, "添加失败!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(mContext, "添加成功!", Toast.LENGTH_SHORT).show();
mEditEnglish.setText("");
mEditChinese.setText("");
}
}
@Override
protected int initLayout() {
return R.layout.addwords;
}
@Override
protected void initView() {
mEditEnglish = findViewById(R.id.edit_english);
mEditChinese = findViewById(R.id.edit_chinese);
mBtnAdd = findViewById(R.id.btn_add);
}
}
选择题:
主体是很简单的一个TextView加上四个Button的布局,然后在按钮的右下角放了一个小一点的Buton,用来获取下一个单词(当然也可以做成选完直接换的那种,不过那种感觉不如这种好),最下面是一个 “掌握了单词” 的TextView,有时候背单词遇到那种已经背的特别熟的单词,就可以通过这种方式直接在背单词的时候删掉,而不是去词库删。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:
版权声明:本文标题:数据库实现一个轻量的背单词APP 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728279542a1151674.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论