android 之SQLite案例--商品展示

来源:互联网 发布:杀戮游戏网络电影 编辑:程序博客网 时间:2024/05/17 08:53

我们学习了关于数据库的知识,对增删改查有了一定的了解。今天用安卓做一个小案例。要实现增删改查使用到ListView和SQLite数据库。步骤如下:
1.activity_main.xml
  这里写图片描述
   代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    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"    android:orientation="vertical"    tools:context="bzu.edu.cn.cartview.MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">        <EditText            android:id="@+id/name"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:hint="商品名称"            android:layout_weight="1"            android:inputType="textPersonName"/>        <EditText            android:id="@+id/sum"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:hint="金额"            android:layout_weight="1"            />        <ImageButton            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@android:drawable/ic_input_add"            android:id="@+id/add"            android:onClick="add"            android:layout_weight="0" />    </LinearLayout>    <ListView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/ware">    </ListView></LinearLayout>

2.ListView布局
这里写图片描述
ware.xml
代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal" android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="10dp"    >    <TextView        android:id="@+id/id"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:text="1"        android:layout_weight="1"        android:textSize="25sp"/>    <TextView        android:id="@+id/warename"        android:layout_width="0dp"        android:layout_height="wrap_content"       android:layout_weight="2"        android:text="毛巾"        android:textSize="25sp"/>    <TextView        android:id="@+id/money"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:text="100"       android:layout_weight="2"        android:textSize="25sp"/>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        android:padding="0dp"       >        <ImageButton            android:id="@+id/up"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginBottom="-12dp"            android:src="@android:drawable/arrow_up_float"/>        <ImageButton            android:id="@+id/down"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@android:drawable/arrow_down_float"            />    </LinearLayout>    <ImageButton        android:layout_marginTop="13dp"        android:id="@+id/delete"        android:layout_width="25dp"        android:layout_height="25dp"        android:src="@android:drawable/ic_menu_delete"        /></LinearLayout>

3.创建数据库
   
    定义一个DbHelper类继承SQLiteOpenHelper, 代码如下:

package bzu.edu.cn.cartview;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.provider.Settings;import android.widget.Toast;public class DbHelper extends SQLiteOpenHelper {    private Context context;    public DbHelper(Context context) {        super(context, "ware.db", null, 1);        this.context=context;    }    @Override    public void onCreate(SQLiteDatabase db) {        System.out.println("onCreate");        db.execSQL("create table ware(_id integer primary key autoincrement,name varchar(20),money integer)");        Toast.makeText(context,"create succeed",Toast.LENGTH_SHORT).show();    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {           db.execSQL("drop table if exists ware");           onCreate(db);    }}

4.创建Ware类
代码如下:

package bzu.edu.cn.cartview;public class Ware {    private long id;    private String warename;    private Integer money;    public Ware(long id, String warename, Integer money) {        this.id = id;        this.warename = warename;        this.money = money;    }    public Ware(String warename, Integer money) {        this.warename = warename;        this.money = money;    }    public Ware()    {        super();    }    public long getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getWarename() {        return warename;    }    public void setWarename(String warename) {        this.warename = warename;    }    public Integer getMoney() {        return money;    }    public void setMoney(Integer money) {        this.money = money;    }    public String toString()    {        return  "[序号:"+id+",商品名称:"+warename+",金额:"+money+"]";    }}

5.创建数据操作编辑类–WareDao
代码如下:

package bzu.edu.cn.cartview;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class WareDao {    private DbHelper dbHelper;    public WareDao(Context context)    {        dbHelper=new DbHelper(context);    }    public void insert(Ware ware)    {        SQLiteDatabase db=dbHelper.getWritableDatabase();        ContentValues contentValues=new ContentValues();        contentValues.put("name",ware.getWarename());        contentValues.put("money",ware.getMoney());        long id= db.insert("ware",null,contentValues);        ware.setId((int) id);        db.close();    }    public int delete(long id)    {        SQLiteDatabase db=dbHelper.getWritableDatabase();        int count=db.delete("ware","_id=?",new String[]{ id+""});        db.close();        return count;    }    public int update(Ware ware)    {        SQLiteDatabase db=dbHelper.getWritableDatabase();        ContentValues contentValues=new ContentValues();        contentValues.put("name",ware.getWarename());        contentValues.put("money",ware.getMoney());        int count=db.update("ware",contentValues,"_id=?",new String[]{ware.getId()+""});        db.close();        return count;    }    public List<Ware> query()    {        SQLiteDatabase db=dbHelper.getReadableDatabase();        Cursor cursor=db.query("ware",null,null,null,null,null,null);        List<Ware> list=new ArrayList<Ware>();        while (cursor.moveToNext())        {            int id=cursor.getInt(cursor.getColumnIndex("_id"));            String name=cursor.getString(1);            int sum=cursor.getInt(2);            list.add(new Ware(id,name,sum));        }        cursor.close();        db.close();        return list;    }}

6.编写界面交互代码–MainActivity
代码如下:

package bzu.edu.cn.cartview;import android.app.AlertDialog;import android.content.DialogInterface;import android.support.annotation.NonNull;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView ware1;    private WareAdapter wareAdapter;    private List<Ware> wareList;    private EditText name,balance;    private WareDao wareDao;   private int i = 1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ware1=(ListView) findViewById(R.id.ware);        name=(EditText)findViewById(R.id.name);        balance=(EditText)findViewById(R.id.sum);        wareDao=new WareDao(MainActivity.this);        wareList=wareDao.query();        wareAdapter=new WareAdapter();        ware1.setAdapter(wareAdapter);    }    public void add(View view)    {        String name1=name.getText().toString();        int balance1= Integer.parseInt(balance.getText().toString());        wareList=new ArrayList<>();        Ware ware=new Ware(i++,name1,balance1);        wareDao.insert(ware);        wareList.add(ware);//插入集合        wareList=wareDao.query();//查询所有数据        wareAdapter=new WareAdapter();        ware1.setAdapter(wareAdapter);//添加适配器    }    public class WareAdapter extends BaseAdapter {        @Override        public int getCount() {            return wareList.size();//获得条目总数        }        @Override        public Object getItem(int position) {            return wareList.get(position);//根据位置获取对象        }        @Override        public long getItemId(int position) {            return position;//根据位置获取id        }        @NonNull        @Override        //获取条目视图        public View getView(int position, View convertView, ViewGroup parent) {            final Ware ware= wareList.get(position);            View view;            ViewHolder viewHolder;            if (convertView==null) {                view = View.inflate(MainActivity.this, R.layout.ware, null);                viewHolder=new ViewHolder();                viewHolder.id = (TextView) view.findViewById(R.id.id);                viewHolder.warename = (TextView) view.findViewById(R.id.warename);                viewHolder.money = (TextView) view.findViewById(R.id.money);                view.setTag(viewHolder);            }else {                view=convertView;                viewHolder=(ViewHolder)view.getTag();            }            viewHolder.id.setText(ware.getId()+"");            viewHolder.warename.setText(ware.getWarename());            viewHolder.money.setText(ware.getMoney()+"");            viewHolder.up=(ImageButton)view.findViewById(R.id.up);            viewHolder.down=(ImageButton)view.findViewById(R.id.down);            viewHolder.delete=(ImageButton)view.findViewById(R.id.delete);            //向上箭头点击事件            viewHolder.up.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    ware.setMoney(ware.getMoney()+1);                    notifyDataSetChanged();                    wareDao.update(ware);                }            });            //向下箭头点击事件            viewHolder.down.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    ware.setMoney(ware.getMoney()-1);                    notifyDataSetChanged();                    wareDao.update(ware);                }            });            //删除图片点击触发事件            viewHolder.delete.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    android.content.DialogInterface.OnClickListener listener=new android.content.DialogInterface.OnClickListener() {                        @Override                        public void onClick(DialogInterface dialog, int which) {                            wareList.remove(ware);                            wareDao.delete(ware.getId());                            notifyDataSetChanged();                        }                    };                    //创建对话框                    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);                    builder.setTitle("确定要删除吗?");                    builder.setPositiveButton("确定",listener);                    builder.setNegativeButton("取消",null);                    builder.show();                }            });            return view;        }        class ViewHolder{            TextView id;            TextView warename;            TextView money;            ImageButton up,down,delete;        }    }}

7.运行程序效果图
这里写图片描述

单击添加按钮插入数据

这里写图片描述

点击上下键,效果如下:
这里写图片描述

这里写图片描述

再添加数据:
这里写图片描述

点击删除按钮
这里写图片描述

成功删除
这里写图片描述

程序到这就差不多完了,如果有更好的方法,可以提供。

0 0