当前位置: 首页 > news >正文

做报名链接的网站字体在线设计网站

做报名链接的网站,字体在线设计网站,中国风html5网站模板免费下载,小程序开发外包注意事项实验七#xff1a;SQLite 和 SQLiteDatabase 的使用 7.1 实验目的 本次实验的目的是让大家熟悉 Android 中对数据库进行操作的相关的接口、类等。SQLiteDatabase 这个是在 android 中数据库操作使用最频繁的一个类。通过它可以实现数据库的创建或打开、创建表、插入数据、删…实验七SQLite 和 SQLiteDatabase 的使用 7.1 实验目的 本次实验的目的是让大家熟悉 Android 中对数据库进行操作的相关的接口、类等。SQLiteDatabase 这个是在 android 中数据库操作使用最频繁的一个类。通过它可以实现数据库的创建或打开、创建表、插入数据、删除数据、查询数据、修改数据等操作。 7.2 实验要求 实现便签管理小例程。创建项目并熟悉文件目录结构实现便签增删改查功能的实验步骤 7.3 实验内容 【练习 7.1】 便签管理小例程 步骤 1: 项目结构 创建一个名为便签管理系统的Android项目包含以下文件和文件夹 activity_main.xml (启动窗体)insertinfo.xml (新增便签窗体)showinfo.xml (查看便签信息窗体)manageflag.xml (便签管理窗体)MainActivity.java (主活动)InsertFlag.java (新增便签活动)ShowInfo.java (查看便签信息活动)ManageFlag.java (便签管理活动)DBOpenHelper.java (数据库帮助类)FlagDao.java (便签数据访问类)flag.java (便签实体类)AndroidManifest.xml (清单文件) 步骤 2: 配置布局文件 activity_main.xml (启动窗体) 包含两个按钮btnflaginfo (查看便签信息) 和 btninsertinfo (添加便签) LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:orientationverticalLinearLayoutandroid:idid/linearLayout1android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_weight0.06android:orientationverticalRelativeLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentButtonandroid:idid/btnflaginfoandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text便签信息android:textColor#8C6931android:textSize20dp /Buttonandroid:idid/btninsertinfoandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_toRightOfid/btnflaginfoandroid:text添加便签android:textColor#8C6931android:textSize20dp //RelativeLayout/LinearLayout /LinearLayoutInsertinfo.xml (新增便签窗体) 包含一个文本框 txtFlag 用于输入便签内容 包含两个按钮btnflagSave (保存) 和 btnflagCancel (取消) ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/itemflagandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:orientationverticalLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_weight3android:orientationverticalTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenterandroid:gravitycenter_horizontalandroid:text新增便签android:textColor#000000android:textSize40spandroid:textStylebold //LinearLayoutLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_weight1android:orientationverticalRelativeLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:padding5dpTextViewandroid:idid/tvFlagandroid:layout_width350dpandroid:layout_heightwrap_contentandroid:layout_alignParentRighttrueandroid:text请输入便签最多输入 200 字android:textColor#8C6931android:textSize23sp /EditTextandroid:idid/txtFlagandroid:layout_width350dpandroid:layout_height400dpandroid:layout_belowid/tvFlagandroid:gravitytopandroid:singleLinefalse //RelativeLayout/LinearLayoutLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_weight3android:orientationverticalRelativeLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:padding10dpButtonandroid:idid/btnflagCancelandroid:layout_width80dpandroid:layout_heightwrap_contentandroid:layout_alignParentRighttrueandroid:layout_marginLeft10dpandroid:text取消 /Buttonandroid:idid/btnflagSaveandroid:layout_width80dpandroid:layout_heightwrap_contentandroid:layout_toLeftOfid/btnflagCancelandroid:maxLength200android:text保存 //RelativeLayout/LinearLayout /LinearLayoutshowinfo.xml (查看便签信息窗体) 包含一个文本视图 textView1 和一个列表视图 lvinfo 用于展示便签信息 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalTextViewandroid:idid/textView1android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text便签信息android:textSize20dp /LinearLayoutandroid:idid/linearLayout2android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_weight0.94android:orientationverticalListViewandroid:idid/lvinfoandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:scrollbarAlwaysDrawVerticalTracktrue //LinearLayout /LinearLayoutmanageflag.xml (便签管理窗体) 包含一个文本框 txtFlagManage 和两个按钮btnFlagManageEdit (修改) 和 btnFlagManageDelete (删除) ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/flagmanageandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:orientationverticalLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_weight3android:orientationverticalTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenterandroid:gravitycenter_horizontalandroid:text便签管理android:textColor#000000android:textSize40spandroid:textStylebold //LinearLayoutLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_weight1android:orientationverticalRelativeLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:padding5dpTextViewandroid:idid/tvFlagManageandroid:layout_width350dpandroid:layout_heightwrap_contentandroid:layout_alignParentRighttrueandroid:text请输入便签最多输入 200 字android:textColor#8C6931android:textSize23sp /EditTextandroid:idid/txtFlagManageandroid:layout_width350dpandroid:layout_height400dpandroid:layout_belowid/tvFlagManageandroid:gravitytopandroid:singleLinefalse //RelativeLayout/LinearLayoutLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_weight3android:orientationverticalRelativeLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:padding10dpButtonandroid:idid/btnFlagManageDeleteandroid:layout_width80dpandroid:layout_heightwrap_contentandroid:layout_alignParentRighttrueandroid:layout_marginLeft10dpandroid:text删除 /Buttonandroid:idid/btnFlagManageEditandroid:layout_width80dpandroid:layout_heightwrap_contentandroid:layout_toLeftOfid/btnFlagManageDeleteandroid:maxLength200android:text修改 //RelativeLayout/LinearLayout /LinearLayout步骤 3: 配置活动文件 MainActivity.java 初始化界面和按钮为按钮添加点击事件分别跳转到 ShowInfo 和 InsertFlag 活动 package com.example.notemanagementsystem.activity;import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;import com.wenlong.DBLab.activity.R;public class MainActivity extends Activity {Button btnflaginfo, btninsertinfo;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnflaginfo (Button) findViewById(R.id.btnflaginfo);btninsertinfo (Button) findViewById(R.id.btninsertinfo);btnflaginfo.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {Intent intent new Intent(MainActivity.this, ShowInfo.class);startActivity(intent);}});btninsertinfo.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {Intent intent new Intent(MainActivity.this, InsertFlag.class);startActivity(intent);}});}Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;} }InsertFlag.java 处理新增便签的界面逻辑获取输入的便签内容保存到数据库并显示相应的提示信息 package com.example.notemanagementsystem;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;import com.example.notemanagementsystem.DAO.FlagDao; import com.example.notemanagementsystem.model.flag;public class InsertFlag extends Activity {EditText txtFlag;// 创建 EditText 组件对象Button btnflagSaveButton;// 创建 Button 组件对象Button btnflagCancelButton;// 创建 Button 组件对象Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.insertinfo);txtFlag (EditText) findViewById(R.id.txtFlag);btnflagSaveButton (Button) findViewById(R.id.btnflagSave);btnflagCancelButton (Button) findViewById(R.id.btnflagCancel);btnflagSaveButton.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {String strFlag txtFlag.getText().toString();// 获取便签文本框的值if (!strFlag.isEmpty()) {// 判断获取FlagDao flagDAO new FlagDao(InsertFlag.this);// 创建FlagDAO 对象flag flag new flag(flagDAO.getMaxId() 1, strFlag);// 创建 Tb_flag 对象flagDAO.add(flag);// 添加便签信息// 弹出信息提示Toast.makeText(InsertFlag.this, 〖新增便签〗数据添加成功,Toast.LENGTH_SHORT).show();} else {Toast.makeText(InsertFlag.this, 请输入便签,Toast.LENGTH_SHORT).show();}}});btnflagCancelButton.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {finish();}});} }ShowInfo.java 展示所有便签信息的界面逻辑使用 ListView 显示便签列表点击某一项跳转到 ManageFlag 活动 package com.example.notemanagementsystem;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView;import com.example.notemanagementsystem.DAO.FlagDao; import com.example.notemanagementsystem.model.flag;import java.util.List;public class ShowInfo extends Activity {public static final String FLAG id;// 定义一个常量用来作为请求码ListView lvinfo;// 创建 ListView 对象String[] strInfos null;// 定义字符串数组用来存储收入信息ArrayAdapterString arrayAdapter null;// 创建 ArrayAdapter 对象Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.showinfo);lvinfo (ListView) findViewById(R.id.lvinfo);FlagDao flaginfo new FlagDao(ShowInfo.this);// 创建 FlagDAO 对象// 获取所有便签信息并存储到 List 泛型集合中Listflag listFlags flaginfo.getScrollData(0,(int) flaginfo.getCount());strInfos new String[listFlags.size()];// 设置字符串数组的长度int n 0;// 定义一个开始标识for (flag tb_flag : listFlags) {// 将便签相关信息组合成一个字符串存储到字符串数组的相应位置strInfos[n] tb_flag.getid() | tb_flag.getFlag();if (strInfos[n].length() 15)// 判断便签信息的长度是否大于 15strInfos[n] strInfos[n].substring(0, 15) ……;// 将位置大于 15之后的字符串用……代替n;// 标识加 1}arrayAdapter new ArrayAdapterString(this,android.R.layout.simple_list_item_1, strInfos);lvinfo.setAdapter(arrayAdapter);lvinfo.setOnItemClickListener(new OnItemClickListener() {Overridepublic void onItemClick(AdapterView? parent, View view, int position,long id) {String strInfo String.valueOf(((TextView) view).getText());// 记录单击的项信息String strid strInfo.substring(0, strInfo.indexOf(|));// 从项信息中截取编号Intent intent null;// 创建 Intent 对象intent new Intent(ShowInfo.this, ManageFlag.class);// 使用 FlagManage 窗口初始化 Intent 对象intent.putExtra(FLAG, strid);// 设置要传递的数据startActivity(intent);// 执行 Intent打开相应的 Activity}});} }ManageFlag.java 处理便签管理的界面逻辑获取传递的便签id显示该便签内容可进行编辑和删除操作 package com.example.notemanagementsystem;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;import com.example.notemanagementsystem.DAO.FlagDao; import com.example.notemanagementsystem.model.flag;public class ManageFlag extends Activity {EditText txtFlag;// 创建 EditText 对象Button btnEdit, btnDel;// 创建两个 Button 对象String strid;// 创建字符串表示便签的 idOverrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.manageflag);txtFlag (EditText) findViewById(R.id.txtFlagManage);btnEdit (Button) findViewById(R.id.btnFlagManageEdit);btnDel (Button) findViewById(R.id.btnFlagManageDelete);Intent intent getIntent();// 创建 Intent 对象Bundle bundle intent.getExtras();// 获取便签 idstrid bundle.getString(ShowInfo.FLAG);// 将便签 id 转换为字符串final FlagDao flagDAO new FlagDao(ManageFlag.this);// 创建 FlagDAO 对象txtFlag.setText(flagDAO.find(Integer.parseInt(strid)).getFlag());// 为修改按钮设置监听事件btnEdit.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {flag tb_flag new flag();// 创建 Tb_flag 对象tb_flag.setid(Integer.parseInt(strid));// 设置便签 idtb_flag.setFlag(txtFlag.getText().toString());// 设置便签值flagDAO.update(tb_flag);// 修改便签信息// 弹出信息提示Toast.makeText(ManageFlag.this, 〖便签数据〗修改成功,Toast.LENGTH_SHORT).show();}});// 为删除按钮设置监听事件btnDel.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {flagDAO.detele(Integer.parseInt(strid));// 根据指定的 id 删除便签信息Toast.makeText(ManageFlag.this, 〖便签数据〗删除成功,Toast.LENGTH_SHORT).show();}});} }步骤 4: 配置数据库相关文件 DBOpenHelper.java 创建数据库定义便签信息表结构 package com.example.notemanagementsystem.DAO;import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;public class DBOpenHelper extends SQLiteOpenHelper {private static final int VERSION 1;// 定义数据库版本号private static final String DBNAME flag.db;// 定义数据库名public DBOpenHelper(Context context) {super(context, DBNAME, null, VERSION);}Overridepublic void onCreate(SQLiteDatabase db) // 创建数据库{db.execSQL(create table tb_flag (_id integer primary key,flag varchar(200)) );// 创建便签信息表}Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) // 覆写基类的 onUpgrade方法以便数据库版本更新{} }FlagDao.java 提供对便签表的增删改查操作包含获取便签总记录数和最大编号的方法 package com.example.notemanagementsystem.DAO;import java.util.ArrayList; import java.util.List;import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase;import com.example.notemanagementsystem.DAO.DBOpenHelper; import com.example.notemanagementsystem.model.flag;public class FlagDao {private DBOpenHelper helper;// 创建 DBOpenHelper 对象private SQLiteDatabase db;// 创建 SQLiteDatabase 对象public FlagDao(Context context)// 定义构造函数{helper new DBOpenHelper(context);// 初始化 DBOpenHelper 对象}/*** 添加便签信息** param tb_flag*/public void add(flag flag) {db helper.getWritableDatabase();// 初始化 SQLiteDatabase 对象db.execSQL(insert into tb_flag (_id,flag) values (?,?), new Object[]{flag.getid(), flag.getFlag()});// 执行添加便签信息操作}/*** 更新便签信息** param tb_flag*/public void update(flag tb_flag) {db helper.getWritableDatabase();// 初始化 SQLiteDatabase 对象db.execSQL(update tb_flag set flag ? where _id ?, new Object[]{tb_flag.getFlag(), tb_flag.getid()});// 执行修改便签信息操作}/*** 查找便签信息** param id* return*/public flag find(int id) {db helper.getWritableDatabase();// 初始化 SQLiteDatabase 对象Cursor cursor db.rawQuery(select _id,flag from tb_flag where _id ?,new String[]{String.valueOf(id)});// 根据编号查找便签信息并存储到 Cursor 类中if (cursor.moveToNext())// 遍历查找到的便签信息{// 将遍历到的便签信息存储到 Tb_flag 类中return new flag(cursor.getInt(cursor.getColumnIndex(_id)), cursor.getString(cursor.getColumnIndex(flag)));}return null;// 如果没有信息则返回 null}/*** 刪除便签信息** param ids*/public void detele(Integer... ids) {if (ids.length 0)// 判断是否存在要删除的 id{StringBuffer sb new StringBuffer();// 创建 StringBuffer 对象for (int i 0; i ids.length; i)// 遍历要删除的 id 集合{sb.append(?).append(,);// 将删除条件添加到 StringBuffer 对象中}sb.deleteCharAt(sb.length() - 1);// 去掉最后一个“,“字符db helper.getWritableDatabase();// 创建 SQLiteDatabase 对象// 执行删除便签信息操作db.execSQL(delete from tb_flag where _id in ( sb ),(Object[]) ids);}}/*** 获取便签信息** param start 起始位置* param count 每页显示数量* return*/public Listflag getScrollData(int start, int count) {Listflag lisTb_flags new ArrayListflag();// 创建集合对象db helper.getWritableDatabase();// 初始化 SQLiteDatabase 对象// 获取所有便签信息Cursor cursor db.rawQuery(select * from tb_flag limit ?,?,new String[]{String.valueOf(start), String.valueOf(count)});while (cursor.moveToNext())// 遍历所有的便签信息{// 将遍历到的便签信息添加到集合中lisTb_flags.add(new flag(cursor.getInt(cursor.getColumnIndex(_id)), cursor.getString(cursor.getColumnIndex(flag))));}return lisTb_flags;// 返回集合}/*** 获取总记录数** return*/public long getCount() {db helper.getWritableDatabase();// 初始化 SQLiteDatabase 对象Cursor cursor db.rawQuery(select count(_id) from tb_flag, null);// 获取便签信息的记录数if (cursor.moveToNext())// 判断 Cursor 中是否有数据{return cursor.getLong(0);// 返回总记录数}return 0;// 如果没有数据则返回 0}/*** 获取便签最大编号** return*/public int getMaxId() {db helper.getWritableDatabase();// 初始化 SQLiteDatabase 对象Cursor cursor db.rawQuery(select max(_id) from tb_flag, null);// 获取便签信息表中的最大编号while (cursor.moveToLast()) {// 访问 Cursor 中的最后一条数据return cursor.getInt(0);// 获取访问到的数据即最大编号}return 0;// 如果没有数据则返回 0} }flag.java 定义便签实体类包含编号和便签内容 package com.example.notemanagementsystem.model;public class flag {private int _id;// 存储便签编号private String flag;// 存储便签信息public flag()// 默认构造函数{super();}// 定义有参构造函数用来初始化便签信息实体类中的各个字段public flag(int id, String flag) {super();this._id id;// 为便签号赋值this.flag flag;// 为便签信息赋值}public int getid()// 设置便签编号的可读属性{return _id;}public void setid(int id)// 设置便签编号的可写属性{this._id id;}public String getFlag()// 设置便签信息的可读属性{return flag;}public void setFlag(String flag)// 设置便签信息的可写属性{this.flag flag;} }步骤 5: 配置清单文件 AndroidManifest.xml 配置主活动为 MainActivity配置其他三个活动: ShowInfo, InsertFlag, ManageFlag ?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.wenlong.DBLab.activityandroid:versionCode1android:versionName1.0uses-sdkandroid:minSdkVersion8android:targetSdkVersion18 /applicationandroid:allowBackuptrueandroid:icondrawable/ic_launcherandroid:labelstring/app_nameandroid:themestyle/AppThemeactivityandroid:namecom.example.notemanagementsystem.MainActivityandroid:labelstring/app_nameintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activityactivityandroid:namecom.example.notemanagementsystem.ShowInfoandroid:icondrawable/ic_launcherandroid:label便签信息/activityactivityandroid:namecom.example.notemanagementsystem.InsertFlagandroid:icondrawable/ic_launcherandroid:label添加便签/activityactivityandroid:namecom.example.notemanagementsystem.ManageFlagandroid:icondrawable/ic_launcherandroid:label便签管理/activity/application /manifest步骤 6: 运行与测试 1.文档结构 2.运行效果 【拓展题】编写 Android 项目实现商品库存数据库管理小系统。 步骤一创建新的 Android 项目 打开 Android Studio。选择 “File” - “New” - “New Project…”。在弹出的对话框中输入项目名称为 “InventoryManagementSystem”选择语言为 Java选择 “Phone and Tablet” - “Empty Activity”然后点击 “Finish”。 步骤二创建数据库帮助类DBOpenHelper 在项目中创建一个用于管理数据库的帮助类。 DBOpenHelper.java package com.example.inventorymanagementsystem.database;import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;public class DBOpenHelper extends SQLiteOpenHelper {private static final String DB_NAME inventory.db;private static final int DB_VERSION 1;public DBOpenHelper(Context context) {super(context, DB_NAME, null, DB_VERSION);}Overridepublic void onCreate(SQLiteDatabase db) {// 创建商品表db.execSQL(CREATE TABLE IF NOT EXISTS products ( _id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, quantity INTEGER, price REAL));}Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 数据库升级操作} }步骤三创建商品实体类Product 创建一个用于表示商品的实体类。 Product.java package com.example.inventorymanagementsystem.model;public class Product {private int id;private String name;private int quantity;private double price;public Product() {}public Product(String name, int quantity, double price) {this.name name;this.quantity quantity;this.price price;}// Getter and setter methods }步骤四创建商品数据操作类ProductDAO 创建一个用于执行商品数据操作的类。 ProductDAO.java package com.example.inventorymanagementsystem.database;import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.example.inventorymanagementsystem.model.Product; import java.util.ArrayList; import java.util.List;public class ProductDAO {private SQLiteDatabase db;public ProductDAO(Context context) {DBOpenHelper dbHelper new DBOpenHelper(context);db dbHelper.getWritableDatabase();}public long addProduct(Product product) {ContentValues values new ContentValues();values.put(name, product.getName());values.put(quantity, product.getQuantity());values.put(price, product.getPrice());return db.insert(products, null, values);}public ListProduct getAllProducts() {ListProduct productList new ArrayList();Cursor cursor db.query(products, null, null, null, null, null, null);while (cursor.moveToNext()) {Product product new Product();product.setId(cursor.getInt(cursor.getColumnIndex(_id)));product.setName(cursor.getString(cursor.getColumnIndex(name)));product.setQuantity(cursor.getInt(cursor.getColumnIndex(quantity)));product.setPrice(cursor.getDouble(cursor.getColumnIndex(price)));productList.add(product);}cursor.close();return productList;}// 添加其他数据库操作方法如更新商品信息、删除商品等 }步骤五创建商品管理界面MainActivity 在 res/layout 文件夹中创建一个用于显示商品列表和添加商品的界面布局文件。 activity_main.xml ?xml version1.0 encodingutf-8? RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityListViewandroid:idid/listViewProductsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:dividerandroid:color/darker_grayandroid:dividerHeight1dp /Buttonandroid:idid/btnAddProductandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textAdd Productandroid:layout_alignParentBottomtrueandroid:layout_alignParentEndtrueandroid:layout_margin16dp/ /RelativeLayoutactivity_add_product.xml LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroid:padding16dpEditTextandroid:idid/edtProductNameandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hint商品名称 /EditTextandroid:idid/edtProductQuantityandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:inputTypenumberandroid:hint数量 /EditTextandroid:idid/edtProductPriceandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:inputTypenumberDecimalandroid:hint价格 /Buttonandroid:idid/btnAddProductandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text添加商品 / /LinearLayoutMainActivity.java package com.example.inventorymanagementsystem;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import androidx.appcompat.app.AppCompatActivity; import com.example.inventorymanagementsystem.database.ProductDAO; import com.example.inventorymanagementsystem.model.Product; import java.util.List;public class MainActivity extends AppCompatActivity {private ListView listViewProducts;private Button btnAddProduct;private ProductDAO productDAO;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listViewProducts findViewById(R.id.listViewProducts);btnAddProduct findViewById(R.id.btnAddProduct);productDAO new ProductDAO(this);updateProductList();btnAddProduct.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {Intent intent new Intent(MainActivity.this, AddProductActivity.class);startActivity(intent);}});}private void updateProductList() {ListProduct productList productDAO.getAllProducts();ArrayAdapterProduct adapter new ArrayAdapter(this, android.R.layout.simple_list_item_1, productList);listViewProducts.setAdapter(adapter);} }AddProductActivity.java package com.example.inventorymanagementsystem;import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity; import com.example.inventorymanagementsystem.database.ProductDAO; import com.example.inventorymanagementsystem.model.Product;public class AddProductActivity extends AppCompatActivity {private EditText edtProductName, edtProductQuantity, edtProductPrice;private Button btnAddProduct;private ProductDAO productDAO;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_add_product);edtProductName findViewById(R.id.edtProductName);edtProductQuantity findViewById(R.id.edtProductQuantity);edtProductPrice findViewById(R.id.edtProductPrice);btnAddProduct findViewById(R.id.btnAddProduct);productDAO new ProductDAO(this);btnAddProduct.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {addProduct();}});}private void addProduct() {// 获取用户输入的商品信息String productName edtProductName.getText().toString();String quantityStr edtProductQuantity.getText().toString();String priceStr edtProductPrice.getText().toString();if (!productName.isEmpty() !quantityStr.isEmpty() !priceStr.isEmpty()) {int quantity Integer.parseInt(quantityStr);double price Double.parseDouble(priceStr);// 创建商品对象Product newProduct new Product(productName, quantity, price);// 将商品添加到数据库long result productDAO.addProduct(newProduct);if (result ! -1) {Toast.makeText(AddProductActivity.this, 商品添加成功, Toast.LENGTH_SHORT).show();finish(); // 关闭当前界面} else {Toast.makeText(AddProductActivity.this, 商品添加失败, Toast.LENGTH_SHORT).show();}} else {Toast.makeText(AddProductActivity.this, 请填写完整的商品信息, Toast.LENGTH_SHORT).show();}} }步骤六运行效果
http://www.pierceye.com/news/323103/

相关文章:

  • 06627网页制作和网站建设如何制作自己的公司内部网站
  • 网站营销与推广方案百度大数据分析
  • 手机怎么做自己的网站做网站的公司广州
  • asp.net网站开发案例教程南京seo排名
  • 购物网站开发技术分销
  • 企业网站建设专家工业产品设计包括哪些
  • 潍坊网站开发高手重庆市设计院
  • 微信公众号平台网站开发WordPress破解分享
  • 东营网站建设服务商低价备案域名购买
  • 高校网站建设自查报告哪个外贸网站开发客户比较好用
  • 网站做付费推广都需要问什么wordpress小工具插件
  • 网站的建设技术有哪些北京一环都是住什么人
  • 做外贸soho网站的公司吗已有备案号新增网站备案要关闭原先的站点吗
  • 网站域名注册免费wordpress 让导航悬浮
  • 全景旅游网站项目建设湖南建筑公司网站
  • 做网批那个网站好免费视频素材库app
  • cms建站模板appseo网络优化是什么工作
  • 云落wordpress优化大师在哪里
  • 威海网站建设公司手机网站做落地页
  • 海宁建设局网站三网合一 网站建设
  • 1688货源网官方网站网站怎么做背景
  • 做阿里还是网站中小企业为什么要建设网站
  • 天津的网站建设做网站费用怎么入账
  • 网站原型是产品经理做wordpress手机上用的
  • 专业网站排名优化重庆广告公司电话
  • 在线免费看影视网站正规企业展厅设计公司
  • 励志网站织梦源码做电子杂志用什么网站
  • 电子设计网站wordpress数据清除
  • 义乌网站推广中国住房和城乡建设厅网站
  • 濮阳seo网站建设商贸公司寮步网站建设