ListView+ SQLite实现商品展示
2017-04-24 20:17
218 查看
1.首先是UI界面
建立ListView中子项的布局(在layout下建立item.xml)
2.创建需要用到的java类文件(项目结构如下)
i.DBHelper
DBHelper需要继承SQLiteOpenHelper类:包含两个方法:
public void onCreate(SQLiteDatabase db)创建数据库
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 数据库升级
ii .Account
Account中封装了每一条记录的属性:属性包含:id、 name、balance
同时生成构造方法、toString、Get和Set方法
iii.AccountDao
AccountDao提供了对数据库操作的方法:包含:CRUD方法
简单介绍一个Create方法
public void insert(Account account){ //传入Account 对象 //读取数据库对象 SQLiteDatabase db=helper.getWritableDatabase(); //用来装载要插入的数据的键值对 ContentValues values=new ContentValues(); values.put("name",account.getName()); //获取名字 values.put("balance",account.getBalance()); //获取金额 //向account表插入数据values long id=db.insert("account",null,values); account.setId(id); //得到id db.close();//关闭数据库 }
iiii.MainActivity
MainActivity:属性包含:按钮的监听事件以及对方法的调用
简单介绍一下主要的思路:
//初始化函数 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取添加行的控件对象以及添加事件的监听 initView(); dao = new AccountDao(this); //从数据库查询所有数据 list = dao.queryAll(); adapter = new MyAdapter(); accountLV.setAdapter(adapter);//给ListView添加适配器(自动把数据生成条目) }
//inageview的点击事件触发的方法(添加数据) public void add(View v) { String name = nameET.getText().toString().trim(); String balance = balanceET.getText().toString().trim(); //判断输入内容是否为空若为空不允许添加并Toast提示 if("".equals(name)||"".equals(balance)) { Toast.makeText(getApplicationContext(), "商品名和金额不能为空", Toast.LENGTH_SHORT).show(); return; } //三目运算balance.equals("")则等于0 //如果balance不是空字符串,则进行强制类型转换 Account a = new Account(name, balance.equals("") ? 0 : Integer.parseInt(balance)); dao.insert(a);//插入数据库 list.add(a);//插入集合 adapter.notifyDataSetChanged();//刷新界面 //选中最后一个 accountLV.setSelection(accountLV.getCount() - 1); nameET.setText(""); balanceET.setText(""); }
public View getView(int position, View convertView, ViewGroup parent) { //重用converView View item = convertView != null ? convertView : View.inflate(getApplicationContext(), R.layout.item, null); //获取该视图中的textview TextView idTV = (TextView) item.findViewById(R.id.idTV); TextView nameTV = (TextView) item.findViewById(R.id.nameTV); TextView balanceTV = (TextView) item.findViewById(R.id.balanceTV); //根据当前位置获取Account对象 final Account a = list.get(position); //把Account对象中的数据放到textview中 idTV.setText(a.getId() + ""); nameTV.setText(a.getName()); balanceTV.setText(a.getBalance() + ""); ImageView upTV = (ImageView) item.findViewById(R.id.upIV); ImageView downTV = (ImageView) item.findViewById(R.id.downIV); ImageView deleteTV = (ImageView) item.findViewById(R.id.deleteIV); //向上箭头的事件触发方法 upTV.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { a.setBalance(a.getBalance() + 1); notifyDataSetChanged(); dao.update(a); } }); //向下箭头的事件触发方法 downTV.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { a.setBalance(a.getBalance() - 1); notifyDataSetChanged(); dao.update(a); } }); //删除图片的点击事件触发的方法 deleteTV.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //删除数据之前首先弹出一个对话框 android.content.DialogInterface.OnClickListener listener = new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { list.remove(a);//从集合删除 dao.delete(a.getId());//从数据库删除 notifyDataSetChanged();//刷新界面 } }; //创建对话框 Builder builder = new Builder(MainActivity.this); builder.setTitle("确定要删除吗?"); //设置标题 //设置确定按钮的文本以及监听器 builder.setPositiveButton("确定", listener); builder.setNegativeButton("取消", null); builder.show(); } }); return item; }
3.运行测试
项目案例下载:链接:http://pan.baidu.com/s/1c2N7jqw 密码:87o3 (无力吐槽CSDN资源上传真是重重困难)
相关文章推荐
- sqlite查询结果在listview中展示的实现
- Android ListView与SQLite综合使用(水果商品展示案例)
- 使用自定义的BaseAdapter实现LIstView的展示
- 九、android的ListView实现数据列表展示
- 自定义的BaseAdapter实现LIstView的展示
- jquery+json实现动态商品内容展示的方法
- jquery+json实现动态商品内容展示的方法
- 操作数据库之一(实现SQLiteOpenHelper绑定ListView)
- react native中使用react-native-viewpager实现的商品展示添加点击事件
- 使用ExpandableListView+GridView实现分组数据展示
- 使用自定义的BaseAdapter实现LIstView的展示
- android标题栏RadioButton实现,下面展示切换viewpager,fragment,内容是listview
- SQLite之采用ListView实现数据列表显示
- 使用自定义的BaseAdapter实现LIstView的展示
- ecshop实现商品列表页属性筛选区品牌筛选以LOGO形式展示
- 瀑布流-03-通过封装的自定义布局快速实现商品展示
- Android开发:setContentView切换界面,自定义带CheckBox的ListView显示SQlite条目-----实现
- 使用自定义的BaseAdapter实现LIstView的展示
- Android知识点八(sqllite数据库操作,以及sqlite+handler+XListView实现上拉刷新下拉加载)
- ajax实现简单的商品展示