一、 创建手机界面布局

创建一个activity_main.xml文件代码如下:

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.bz0209.shopshowdemo.activity_main"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/etName"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:hint="商品名称"

android:inputType="text"

android:layout_weight="1"

/>

android:id="@+id/etAmount"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:hint="商品金额"

android:inputType="number"

android:layout_weight="1"

/>

android:id="@+id/ivAdd"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="addGoods"

android:inputType="text"

android:src="@android:drawable/ic_input_add"

/>

android:id="@+id/lvGoods"

android:layout_width="match_parent"

android:layout_height="match_parent">

效果图如下:

二、创建一个存储展示的xml文件

创建一个名为item.xml的布局文件,代码如下:

android:layout_width="match_parent"

android:layout_height="match_parent">

android:text="1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/tvId"

android:textSize="20sp"

android:layout_weight="2"

/>

android:text="商品名称"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/tvName"

android:textSize="20sp"

android:layout_weight="2"

/>

android:text="金额"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/tvAmount"

android:textSize="20sp"

android:layout_weight="2"

/>

android:id="@+id/ivUP"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@android:drawable/arrow_up_float"

/>

android:id="@+id/ivDown"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@android:drawable/arrow_down_float"

/>

android:id="@+id/ivDelete"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@android:drawable/arrow_down_float"

/>

三、创建数据库

在com.example.bz0209.shopshowdemo 的包下创建一个名为db的包,并在该包下定义一个dbHelper类继承自SQLiteOpenHelper,创建数据库代码如下:

package com.example.bz0209.shopshowdemo.db;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

/**

* Created by Administrator on 2017/4/28.

*/

public class DBHelper extends SQLiteOpenHelper{

public static final String CREATE_GOODS="create table goods(_id integer primary key autoincrement,name varchar(20),amount integer)";

public DBHelper(Context context,int version){

super(context,"goods.db",null,version);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(CREATE_GOODS);

}

@Override

public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {

}

}

四、创建GoodsAdapter类

为了操作数据库方便,创建一个GoodsAdapter类。因此需要在com.example.bz0209.shopshowdemo 的包下创建一个名为entity的包,然后在com.example.bz0209.shopshowdemo.entityd的包下定义一个GoodsAdapter类,代码如下:

package com.example.bz0209.shopshowdemo;

import android.content.Context;

import android.support.annotation.NonNull;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.TextView;

import com.example.bz0209.shopshowdemo.entity.Goods;

import java.util.List;

/**

* Created by Administrator on 2017/4/27.

*/

public class GoodsAdapter extends ArrayAdapter{

private int resounceId;

public GoodsAdapter(Context context, int resource, List objects) {

super(context, resource, objects);

resounceId=resource;

}

@NonNull

@Override

public View getView(int position, View convertView, ViewGroup parent) {

Goods goods=getItem(position);

View view=null;

ViewHolder viewHolder;

if (convertView==null){

view = LayoutInflater.from(getContext()).inflate(resounceId,null);

viewHolder =new ViewHolder();

viewHolder.tvId=(TextView) view.findViewById(R.id.tvId);

viewHolder.tvName=(TextView) view.findViewById(R.id.tvName);

viewHolder.tvAmount=(TextView) view.findViewById(R.id.etAmount);

viewHolder.ivUp=(ImageView) view.findViewById(R.id.ivUP);

viewHolder.ivDown=(ImageView) view.findViewById(R.id.ivDown);

viewHolder.ivDelete=(ImageView) view.findViewById(R.id.ivDelete);

view.setTag(viewHolder);

}else {

view=convertView;

viewHolder=(ViewHolder) view.getTag();

}

viewHolder.tvId.setText(goods.getId()+"");

viewHolder.tvName.setText(goods.getName());

viewHolder.tvAmount.setText(goods.getAmount()+"");

return view;

}

class ViewHolder{

TextView tvId;

TextView tvName;

TextView tvAmount;

ImageView ivUp;

ImageView ivDown;

ImageView ivDelete;

}

}

五、创建数据操作逻辑类

在com.example.bz0209.shopshowdemo 的包下创建一个名为dao的包,并创建一个名为GoodsDao的类,用于操作数据。代码如下:

public class GoodsDao {

private DBHelper dbHelper;

public GoodsDao(Context context){

dbHelper=new DBHelper(context,1);

}

public void add(Goods goods){

SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();

ContentValues values=new ContentValues();

values.put("name",goods.getName());

values.put("amount",goods.getAmount());

sqLiteDatabase.insert("goods",null,values);

sqLiteDatabase.close();

}

public int delete(long id){

SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();

int count=sqLiteDatabase.delete("goods","id=?",new String[]{id+""});

sqLiteDatabase.close();

return count;

}

public int update(Goods goods){

SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();

ContentValues values=new ContentValues();

values.put("name",goods.getName());

values.put("amount",goods.getAmount());

int count=sqLiteDatabase.update("goods",values,"id=?",new String[]{goods.getId()+""});

sqLiteDatabase.close();

return count;

}

public List queryAll(){

ListgoodsList=new ArrayList<>();

SQLiteDatabase sqLiteDatabase=dbHelper.getReadableDatabase();

Cursor cursor=sqLiteDatabase.query("goods",null,null,null,null,null,"amount desc");

while (cursor.moveToNext()){

long id=cursor.getLong(cursor.getColumnIndex("_id"));

String name=cursor.getString(cursor.getColumnIndex("name"));

int amount=cursor.getInt(cursor.getColumnIndex("amount"));

Goods goods=new Goods(name,amount);

goodsList.add(goods);

}

cursor.close();

sqLiteDatabase.close();

return goodsList;

}

}

六、编写界面交互代码

数据库操作完成后,需要界面与数据库进行交互,用于实现将数据库中的数据以ListView的形式展现在界面上具体代码如下:

package com.example.bz0209.shopshowdemo;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.EditText;

import android.widget.ListView;

import com.example.bz0209.shopshowdemo.dao.GoodsDao;

import com.example.bz0209.shopshowdemo.entity.Goods;

import java.util.List;

public class activity_main extends AppCompatActivity {

private EditText etName;

private EditText etAmount;

private ListView lvGoods;

private GoodsAdapter goodsAdapter;

private GoodsDao goodsDao;

private ListgoodsList;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

etName=(EditText)findViewById(R.id.etName);

etAmount=(EditText)findViewById(R.id.etAmount);

lvGoods=(ListView)findViewById(R.id.lvGoods);

goodsDao=new GoodsDao(this);

goodsList=goodsDao.queryAll();

goodsAdapter=new GoodsAdapter(this,R.layout.item,goodsList);

lvGoods.setAdapter(goodsAdapter);

}

public void addGoods(View view){

String name=etName.getText().toString();

String amount=etAmount.getText().toString();

Goods goods=new Goods(name,amount.equals("")?0:Integer.parseInt(amount));

goodsDao.add(goods);

}

}

七、完成后的结果展示

(1)创建起数据库的图为:

(2)最后的运行结果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android 代码操作.db demo,Android实现商品展示效果相关推荐

  1. Android 系统性能优化(42)---Android代码内存优化建议-Android资源篇

    Android代码内存优化建议-Android资源篇 这篇文章主要介绍在实际Android应用程序的开发中,容易导致内存泄露的一些情况.开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么写 ...

  2. android 自定义本地验证码demo,Android 自定义验证码输入框的实例代码(支持粘贴连续性)...

    需求 1.能自定义输入框个数和样式 2.支持长按粘贴或剪切板内容自动填充(粘贴连续性) 其中第2点是最为重要的,正是其他人没有这点,逼得自己弄一个 示例 别人的示例: 粘贴居然不支持连续性,只能粘贴第 ...

  3. android 代码设置像素,【Android实例】用设计原则来重构1像素保活代码

    1 类图 在[FJU项目]1像素进程保活(二)中,涉及到的几个类的类图如下所示(仅供参考): 实线箭头:关联 虚线箭头:依赖 重构前UML类图在上图中,OnePixelManager里面有太多的职责, ...

  4. android pda 扫码demo,android 关于PDA条形码的开发demo

    [实例简介] PDA系统为android,该项目主要是实现条形码解读. [实例截图] [核心代码] package com.example.administrator.barcode2ds; impo ...

  5. android 代码获取图片信息吗,Android 通过网络获取图片的代码

    Android 通过网络获取图片的代码 主activity package com.netimg; import android.app.Activity; import android.graphi ...

  6. android 代码浏览,Webview实现android简单的浏览器实例代码

    WebView是Android中一个非常实用的组件,它和Safai.Chrome一样都是基于Webkit网页渲染引擎,可以通过加载HTML数据的方式便捷地展现软件的界面,下面通过本文给大家介绍Webv ...

  7. android代码获取应用名称,Android获取应用程序名称(ApplicationName)

    MainActivity如下: package cn.testapplicationname; import android.os.Bundle; import android.widget.Text ...

  8. android代码zip怎么用,Android平台实现Zip文件解压缩

    [android]代码库在Android平台中如何实现Zip文件的解压缩功能呢? 因为Android内部已经集成了zlib库,对于英文和非密码的Zip文件解压缩还是比较简单的,下面给大家一个解压缩zi ...

  9. android代码修改excel文件格式,Android实现类似execel的表格 能回显并能修改表格内容的方法...

    如下所示: 自定义实现一个水平滚动控件HorizontalScrollView package com.example.view; import android.content.Context; im ...

  10. android代码导入有错误,android新项目导入后进行编译出现cmake错误

    问题描述 使用as加载并且gradle sync 提示:SIMPLE:error configure 同时使用make project 提示 问题出现的环境背景及自己尝试过哪些方法 已经尝试更换过nd ...

最新文章

  1. python 之 Pandas (五)导入导出
  2. Python写各大聊天系统的屏蔽脏话功能原理
  3. 将JavaScript字符串全部转换为小写吗?
  4. 第6章 面向对象(下)
  5. Linux下修改时间时区
  6. 2008-05-23
  7. Word2007发布文章成功
  8. 项目管理—成本效益分析
  9. 有道词典使用离线翻译
  10. 二总线 XM2BUS 通信 消防 串口 开发 CMBUS MBUS 中继 电源无极性
  11. 解决ES只能查询10000条数据的问题
  12. 监控摄像头网页直播解决方案
  13. 王者荣耀android换ios,王者荣耀安卓转ios教程攻略
  14. 已非昔日阿蒙!21世纪柴油发动机详解
  15. Flask蓝本与子域名
  16. Windows 2003 下手动关闭危险端口
  17. php开启端口复用,WebServer端口复用后门
  18. jcr多久更新一次_JCR-2017更新 | 快来看看你的影响影子吧
  19. table固定首行首列
  20. 如何在抖音主页添加官方联系电话?

热门文章

  1. 设置linearlayout最大高度_桥式、门式起重机-安全防护装置30条设置要求(六)- 第1~10条...
  2. Java—String转化为JsonObject
  3. C# MysqlHelper 执行reader时,遇到致命错误或者超时
  4. BZOJ4543[POI2014]Hotel加强版——长链剖分+树形DP
  5. java面试| 精选基础题(1)
  6. Masonry 布局 cell 高度适应的一种方案(实现类似朋友圈简单布局)
  7. 输入框正则表达式大全
  8. CentOS 5 常见的configure error的解决方法
  9. SpringMVC 统一异常处理
  10. Java求矩形面积和圆形面积的异常处理实例