本文基于Java实现了一个简单的单词本安卓app,用的是SQLite数据库,包括布局文件、源码及实现图。

布局设计

单词本主界面

<?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"><EditTextandroid: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" /><EditTextandroid: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" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignParentBottom = "true"android:layout_margin="5dp"><ListViewandroid: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"/><LinearLayoutandroid:layout_height="50dp"android:layout_width="match_parent"android:id="@+id/lineLayout"android:layout_alignParentBottom="true"android:orientation="horizontal"android:gravity="center_horizontal"><Buttonandroid:layout_width="100dp"android:layout_height="50dp"android:id="@+id/add_btn"android:text="添加" /><Buttonandroid:layout_width="100dp"android:layout_height="50dp"android:layout_centerHorizontal="true"android:id="@+id/shanchu_btn"android:layout_gravity="center_vertical"android:text="删除" /><Buttonandroid: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;//声明@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_add_danci);dbOpenHelper = new DBOpenHelper(AddDanciActivity.this, "db_dict", null, 1);//实例化,创建数据库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() {@Overridepublic void onClick(View v) {Toast.makeText(AddDanciActivity.this, "返回单词本主界面", Toast.LENGTH_SHORT).show();finish();}});shanchu_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String word = wordedit.getText().toString();String ys = yisiedit.getText().toString();if (word.equals("")) {Toast.makeText(AddDanciActivity.this, "填写的单词为空", Toast.LENGTH_SHORT).show();} else {deleteData(dbOpenHelper.getReadableDatabase(), word);Toast.makeText(AddDanciActivity.this, "删除成功", Toast.LENGTH_SHORT).show();}}});add_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String word = wordedit.getText().toString();String ys = yisiedit.getText().toString();if (word.equals("") || ys.equals("")) {Toast.makeText(AddDanciActivity.this, "填写的单词或解释为空", Toast.LENGTH_SHORT).show();} else {insertData(dbOpenHelper.getReadableDatabase(), word, ys);//插入生词Toast.makeText(AddDanciActivity.this, "添加生词成功", Toast.LENGTH_SHORT).show();renew();}}});}//插入数据的方法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);//执行插入操作renew();}private void deleteData(SQLiteDatabase sqLiteDatabase, String word) {ContentValues values = new ContentValues();String[] args = {String.valueOf(word)};sqLiteDatabase.delete("tb_dict", "word=?", args);//执行删除操作renew();}@Overrideprotected void onDestroy() {super.onDestroy();if (dbOpenHelper != null) {dbOpenHelper.close();//关闭}}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, "很遗憾,没有相关记录!", 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);}}@Overrideprotected void onStart() {super.onStart();renew();}
}

DBOpenHelper.java

用到的是SQLite数据库,Android自带了一种轻量级数据库,使用非常方便。

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)";//定义创建表的public DBOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, null, version);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_TABLE_SQL);//创建单词的数据表}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {Log.i("词典", "--版本更新" + oldVersion + "-->" + newVersion);}
}

效果图

基于Java实现一个简单的单词本Android App相关推荐

  1. 基于Java实现一个简单的YACC

    资源下载地址:https://download.csdn.net/download/sheziqiong/86918785 资源下载地址:https://download.csdn.net/downl ...

  2. python相关毕设题目_基于java的一个有创意的web毕设题目

    基于java的一个有创意的web毕设题目 一个有创意的web毕设题目 本课题将结合基于Java Web技术的名师一对一课程预约系统,根据本课题的最终目标,在线用户注册.相关信息发布.在线咨询.预约试听 ...

  3. Android——一个简单的记账本APP

    一个简单的记账本APP 视频效果预览 添加账目记录 效果预览 添加账目记录实现 简述 实现 获取日期 字符串时间戳转Date Date转星期 获取时间 Switch控制显示和隐藏 更改Switch样式 ...

  4. 我的Serverless实战—基于Serverless搭建一个简单的WordPress个人博客图文详解-JJZ

    文正在参与 "100%有奖 | 我的Serverless 实战"征稿活动 活动链接:https://marketing.csdn.net/p/15940c87f66c68188cf ...

  5. 基于Java设计一个短链接生成系统

    相信大家在生活中会收到很多短信,而这些短信都有一个特点是链接很短.这些链接背后的原理是什么呢?怎么实现的?小编今天就带你们详细了解一下 我们知道,短信有些是有字数限制的,直接放一个带满各种参数的链接, ...

  6. 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...

  7. 如何用Java设计一个简单的窗口界面(学习中.1)

    如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...

  8. java编写存钱_用Java编写一个简单的存款

    package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...

  9. 用java写一个简单的区块链(下)

    用java写一个简单的区块链(下) 2018年03月29日 21:44:35 java派大星 阅读数:725 标签: 区块链java 更多 个人分类: 区块链 版权声明:本文为博主原创文章,转载请标明 ...

  10. 如何复制java卡,使用java做一个简单的集卡程序

    使用java做一个简单的集卡程序 本次设想的是要集齐4张卡,每张卡的概率都是25%,如果每个用户集齐需要多少次才能集合完毕 public class Test { public static void ...

最新文章

  1. JZOJ 4910. 【NOIP2017模拟12.3】子串
  2. spark on yarn参数: 任务优先级
  3. 聊聊Unity项目管理的那些事:Git-flow和Unity
  4. PAT乙级(1013 数素数)
  5. 接口中的成员只有静态常量和什么_为什么阿里工程师代码写的好?看看他的代码规范就知道了...
  6. 快速轻巧的CQRS和事件源解决方案
  7. 以一个通俗易懂的方式解释一下写程序为什么要声明接口和类,面向对象的编程思想,字数不多,主要通过代码理解
  8. netcat运行出错
  9. 测试架构师10年经验分享:测试小工到资深专家必备这5项技能
  10. 深度学习基础(三)—— 权值矩阵的初始化
  11. Jquery打造AdRotator轮转图片
  12. JavaScript DOM高级程序设计 5动态修改样式和层叠样式表1(源代码)--我要坚持到底!...
  13. 产品思维训练 | 经典产品面试题
  14. 解决 前端Failed to decode downloaded font
  15. 打开网页右下角广告栏慢慢出现,点击慢慢消失
  16. 联想Yoga C930 NM-B741 EYG70 Ariel-SVT笔记本点位图TVW
  17. Centos8Web服务器搭建
  18. 前端 Switch 开关功能
  19. 曼哈顿距离及其应用场景/曼哈顿距离与欧氏距离的不同
  20. 看了下大厂程序员的工资表,我酸了.....

热门文章

  1. python工资一般多少p-我会p图,月薪5000,兼职1.5w...
  2. poi完成word、excel、pdf添加斜体水印
  3. 使用MetaHuman Creator 塑造你心中的人物
  4. 【2020/05/29 开庭】韦东山:闲鱼与盗版更配,坚决打击盗版,起诉到底绝不和解!
  5. 地址解析协议(ARP)
  6. JavaScript 设计模式 —— 单例模式
  7. 微信oauth MySQL_微信OAuth2网页授权登陆接口PHP实例下载
  8. RTI_DDS自定义插件开发 9 API NDDS_Transport_Unshare_RecvResource_Fcn_rrEA
  9. session 与 coolie 的区别与联系
  10. cs5460a c语言程序,cs5460a应用电路(含源程序)