结构:

主活动xml

<?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=".MainActivity"><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><Buttonandroid:id="@+id/add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:onClick="btnAdd"android:text="Add"tools:ignore="OnClick" /></LinearLayout>

MainActivity2 xml

<?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=".MainActivity2"><EditTextandroid:id="@+id/book_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="输入书名:" /><EditTextandroid:id="@+id/book_price"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="输入价格:"android:inputType="number"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"><Buttonandroid:id="@+id/button_cancel"android:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="cancel"android:text="取消"tools:ignore="OnClick" /></LinearLayout><Buttonandroid:id="@+id/button_ok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="confirm"android:text="确定"tools:ignore="OnClick" /></LinearLayout></LinearLayout>

书籍实体类

package com.example.second;import java.io.Serializable;public class Book implements Serializable {private String bookName;private float bookPrice;private int bookID;public int getBookID() {return bookID;}public void setBookID(int bookID) {this.bookID = bookID;}public Book( String bookName, float bookPrice) {this.bookName = bookName;this.bookPrice = bookPrice;}public Book(int bookID, String bookName, float bookPrice) {this.bookID = bookID;this.bookName = bookName;this.bookPrice = bookPrice;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public float getBookPrice() {return bookPrice;}public void setBookPrice(float bookPrice) {this.bookPrice = bookPrice;}
}

数据库操作类:

package com.example.second;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;import androidx.annotation.Nullable;public class SQLHelper extends SQLiteOpenHelper {public static final String BookTable = "book";public SQLHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table book(_id integer primary key autoincrement,name text,price text)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}

主活动 .java

package com.example.second;import androidx.appcompat.app.AppCompatActivity;import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.SimpleCursorAdapter;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private SimpleCursorAdapter adpter;private SQLiteDatabase db;private SQLHelper sqlHelper;private Cursor cursor;private ListView listView;private List<Book> bookList = new ArrayList<>();private Intent intent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent = new Intent(MainActivity.this,MainActivity2.class);listView = findViewById(R.id.listView);sqlHelper = new SQLHelper(this,"book.db",null,1);db = sqlHelper.getWritableDatabase();//创建数据库readDB();cursor = db.query("book",null,null,null,null,null,null);adpter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cursor,new String[]{"name","price"},new int[]{android.R.id.text1,android.R.id.text2}, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);listView.setAdapter(adpter);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, final int position, long id) {PopupMenu popupMenu = new PopupMenu(MainActivity.this, view);popupMenu.inflate(R.menu.main_menu);popupMenu.show();popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()){case R.id.edit:intent.putExtra("position",position);intent.putExtra("bookToUpdate",bookList.get(position));//  startActivityForResult(intent,1);break;case R.id.delete:String bookName = bookList.get(position).getBookName();db.delete(SQLHelper.BookTable,"name=?",new String[]{bookName});reload();break;}return true;}});}});}private void readDB(){Cursor c = sqlHelper.getReadableDatabase().rawQuery("select * from book", null);int columnSize = c.getColumnCount();while(c.moveToNext()){for(int i=0;i<columnSize;i++){bookList.add(new Book(c.getInt(0),c.getString(1),c.getFloat(2)));}}}private void reload(){Cursor cursor = db.query(SQLHelper.BookTable,null,null,null,null,null,null,null);adpter.swapCursor(cursor);}public void btnAdd(View v){//Intent intent = new Intent(MainActivity.this,Main2Activity.class);startActivityForResult(intent,1);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(requestCode ==1){if(resultCode==RESULT_OK){Book book = (Book) data.getSerializableExtra("book");int position = (Integer)data.getIntExtra("position",0);if(book!=null){ContentValues contentValues = new ContentValues();contentValues.put("name",book.getBookName());contentValues.put("price",book.getBookPrice());db.insert(SQLHelper.BookTable,null,contentValues);reload();readDB();}}}}
}

MainActivity2 .java

package com.example.second;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity2 extends AppCompatActivity {private EditText book_name;private EditText book_price;private int position;private  String bookName;private String bookPrice;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);book_name = findViewById(R.id.book_name);book_price = findViewById(R.id.book_price);}public void cancel(View view) {book_name.setText("");book_price.setText("");// 结束当前窗口的生命周期finish();}public void confirm(View v){bookName = book_name.getText().toString();bookPrice = book_price.getText().toString();if(bookName.isEmpty()){book_name.setText("");book_price.setText("");Toast.makeText(MainActivity2.this,"书名不能为空!",Toast.LENGTH_LONG).show();return;}if(bookPrice.isEmpty()){book_name.setText("");book_price.setText("");Toast.makeText(MainActivity2.this,"价格不能为空!",Toast.LENGTH_LONG).show();return;}if(Integer.parseInt(bookPrice)<=0){book_name.setText("");book_price.setText("");Toast.makeText(MainActivity2.this, "价格需要大于0 !", Toast.LENGTH_SHORT).show();return;}Intent intent = new Intent(MainActivity2.this,MainActivity.class);intent.putExtra("book",new Book(bookName,Float.valueOf(bookPrice)));intent.putExtra("position",position);setResult(RESULT_OK,intent);finish();}}

main_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/edit"android:title="编辑"/><item android:id="@+id/delete"android:title="删除"/></menu>

在这里插入图片描述

半期考试 二三题 (书籍维护 数据库)相关推荐

  1. 计算机数据恢复试题,数据恢复半期考试试题答案.doc

    数据恢复半期考试试题答案.doc 数据恢复半期考试题及答案一.名词解释(每题3分,共15分1. 数据恢复就是将通过正常途径不能恢复的数据通过一定的技术手段恢复的过程:2. 主轴转速指单位时间内硬盘盘片 ...

  2. 四川大学计算机导论半期考试,川大人的期末笔记!学霸原来是这样复习的……(内附天府通中奖名单)...

    期末季结束了, 这个过程中,有个"学习宝物"不能少 复习.巩固小贴士 知识点tips全在上面了! 它就是期~末~复~习~笔~记~ 川大人的期末复习笔记长啥样? 是整洁美观的清新派 ...

  3. 数据库三级考试真题 SQL语句查询真题汇总

    数据库三级考试真题 SQL语句查询真题汇总 SQL语句查询 //(1)检索至少借了5本书的同学的借书证号.姓名.系名和借书数量.(5分) select LOANS.借书证号,姓名,系名,count(* ...

  4. oracle上机题库_Oracle数据库考试试题库

    Oracle 数据库考试试题库 1. 启动数据库的命令 ( A ) . A . startup B . startup open C . shutdown D . startup database 2 ...

  5. java计算机毕业设计web在线考试系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计web在线考试系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计web在线考试系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B ...

  6. 高级程序设计c语言试卷答案,高级程序设计语言半期试卷答案.doc

    高级程序设计语言半期试卷答案 西南交通大学2009-2010学年第1学期半期试卷 课程代码 3243800 课程名称 高级语言程序设计 考试时间 90分钟 题号一二三四五六七八九十总成绩得分 阅卷教师 ...

  7. 科研伦理与学术规范期末考试1题库

    ** 科研伦理与学术规范期末考试1题库 ** 自行复制到自己的文档当中便于搜索(收集不易还望点一下收藏或分享链接) 1.科研伦理与学术规范引论 科研伦理与学术规范引论试题 1.下列说法错误的是? A. ...

  8. 计算机二级《MS Office》考试真题及答案

    计算机二级<MS Office>考试真题及答案 一.选择题 1.一个栈的初始状态为空,现将元素1.2.3.4.5.A.B.C.D.E依次人栈,然后再依次出栈,则元素出栈的顺序是(). A. ...

  9. 计算机二级抽题规律,计算机二级考试抽题规律计算机二级考试题及答案.doc

    计算机二级考试抽题规律计算机二级考试题及答案 [--考试祝福语] 1.下列总线中,对微软出的"即插即用"(Play and Plug)方案支持很好的是( A ) A.PCI B.A ...

最新文章

  1. git diff 比较文件_使用Python创建你自己的diff工具
  2. 三两下实现NLP训练和预测,这四个框架你要知道
  3. Mozilla Labs Apps Developer Preview发布了
  4. python文件引用其他文件中的变量
  5. Lady Bird
  6. bzoj5108 数据_成都day3t3
  7. freemarker取数
  8. C# DateTime日期格式
  9. Spring Cloud入门五 hystrix
  10. [CSCCTF 2019 Qual]FlaskLight
  11. Excel函数应用(3)--筛选随机数
  12. 2db多少功率_db与w换算(1db等于多少功率)
  13. 插入图片的时候,总是只是能漏出一点点其他部分都看不到,改变格式从插入型改成浮于文字上方才能完全显示,但浮于文字上方的格式最后不好排版和编辑,稍微一改,整个就乱了,求助如何让插入型的文字图片完全显示出来
  14. 中文和拼音的相关转换
  15. java猫抓老鼠_用猫抓老鼠的实例理解java中面向对象的编程与类和对象以及方法的概念...
  16. win7/win10安装Ubuntu20.04双系统详细操作步骤
  17. android热门搜索标签,Android网易云历史搜索和热门标签
  18. 实现页面头的选择效果(自用)
  19. 泛融科技CEO王小彬:区块链技术创造新商业模式
  20. 基于SU-03T语音模块的超声波拍照系统

热门文章

  1. springboot接收HL7协议报文 HAPI(SpringBoot版本)
  2. Techme inc联手UMT打造创新种子生态圈
  3. 分子生物学实验计算机,BioSun2.0:一个综合性的辅助分子生物学实验设计软件
  4. 信息学奥赛一本通:1839:【05NOIP提高组】谁拿了最多奖学金
  5. 解决【找不到模块“./index.module.scss”或其相应的类型声明。ts(2307)】
  6. 瑞吉外卖(6)—手机验证码登录
  7. http协议和后来居上的https协议
  8. html b 文字阴影,如何用css实现文字阴影?
  9. 爱普生Epson Stylus SX200 一体机驱动
  10. 阿里云盘——屠龙勇士Or搅局者