数据库操作之商品展示
来源:互联网 发布:东方财富mac版 编辑:程序博客网 时间:2024/04/30 10:46
商品展示充分利用学过的SQLite数据库中的增 删 改 查等功能,以及ListView中的常用属性。
运行效果图:
1.新建商品展示对应的布局文件(activity.main)
<?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:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="8dp" android:orientation="vertical" tools:context="cn.edu.bzu.uiapplication.MainActivity"> <LinearLayout android:id="@+id/addLL" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" ><EditText android:id="@+id/nameET" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="商品名称" android:inputType="textPersonName"/><EditText android:id="@+id/balanceET" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="金额" android:inputType="number"/> <ImageView android:id="@+id/addIV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="add" android:src="@android:drawable/ic_input_add"/></LinearLayout> <ListView android:id="@+id/accountLV" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/addLL"> </ListView></LinearLayout>
效果图:
2.在layout下新建一个item,对listview控件布局进行设置。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="10dp"><TextView android:id="@+id/idTV" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="1" android:textColor="#000000" android:textSize="20sp"/> <TextView android:id="@+id/nameTV" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:text="毛巾" android:textColor="#000000" android:textSize="20sp"/> <TextView android:id="@+id/balanceTV" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:text="100" android:textColor="#000000" android:textSize="20sp"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/upIV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="2dp" android:src="@android:drawable/arrow_up_float"/> <ImageView android:id="@+id/downIV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/arrow_down_float"/> </LinearLayout> <ImageView android:id="@+id/deleteIV" android:layout_width="25dp" android:layout_height="25dp" android:src="@android:drawable/ic_menu_delete"/></LinearLayout>
效果图:
3.数据库操作,新建一个Dao包,在该包下定义一个MyHelper类继承SQLiteOpenHelper,数据库代码如下:
package cn.edu.bzu.uiapplication.dao;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.provider.Settings;/** * Created by Administrator on 2017/4/16. */public class MyHelper extends SQLiteOpenHelper { public MyHelper(Context context){ super(context,"itcast.db",null,2); } @Override public void onCreate(SQLiteDatabase db) { System.out.println("onCreate"); db.execSQL("create table account(_id integer primary key autoincrement,name varchar(20),balance integer)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { System.out.println("onUpgrade"); }}
4.为了操作方便,操作数据库数将数据存放在一个Javabeen中,所以新建一个bean包用于存放Javabean类,在bean定义一个Account类,代码如下:package cn.edu.bzu.uiapplication.bean;/** * Created by Administrator on 2017/4/16. */public class Account { private Long id; private String name; private Integer balance; public Account(Long id, String name,Integer balance){ super(); this.id=id; this.name=name; this.balance=balance; } public Account(String name,Integer balance){ super(); this.name=name; this.balance=balance; } public Account(){ super(); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getBalance() { return balance; } public void setBalance(Integer balance) { this.balance = balance; } public String toString(){ return "[序号:"+id+",商品名称:"+name+",余额:"+balance+"]"; }}
5.创建完了数据库和Javabean,接下来就要在dao包下创建一个AccountDao类用于操作数据增删改查。
package cn.edu.bzu.uiapplication.dao;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import java.util.ArrayList;import java.util.List;import cn.edu.bzu.uiapplication.bean.Account;/** * Created by Administrator on 2017/4/16. */public class AccountDao { private MyHelper helper; public AccountDao(Context context){ helper=new MyHelper(context); } //插入方法 public void insert(Account account){ SQLiteDatabase db=helper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name",account.getName()); values.put("balance",account.getBalance()); long id=db.insert("account",null,values); account.setId(id); db.close(); } //根据ID删除方法 public int delete(long id){ SQLiteDatabase db=helper.getWritableDatabase(); int count=db.delete("account","_id=?",new String[]{id+""}); db.close(); return count; } //修改方法 public int update(Account account){ SQLiteDatabase db=helper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name",account.getName()); values.put("balance",account.getBalance()); int count=db.update("account",values,"_id=?",new String[]{account.getId()+""}); db.close(); return count; } //查询所有数据 public List<Account> queryAll(){ SQLiteDatabase db=helper.getWritableDatabase(); Cursor c=db.query("account",null,null,null,null,null,"balance DESC"); List<Account>list=new ArrayList<Account>(); while (c.moveToNext()){ long id=c.getLong(c.getColumnIndex("_id")); String name=c.getString(1); int balance=c.getInt(2); list.add(new Account(id, name,balance)); } c.close(); db.close(); return list; }}
6.最后一步就是编写数据库与界面的交互代码,将数据库中的数据在liatview中展示,运用到了基本适配器adapter。
package cn.edu.bzu.uiapplication;import android.content.DialogInterface;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.app.NotificationCompat;import android.view.View;import android.view.ViewGroup;import android.widget.Adapter;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.List;import cn.edu.bzu.uiapplication.bean.Account;import cn.edu.bzu.uiapplication.dao.AccountDao;import static android.content.DialogInterface.*;public class MainActivity extends AppCompatActivity { private List<Account> list; private AccountDao dao; private EditText nameET; private EditText balanceET; private MyAdapter adapter;//适配器 private ListView accountLV; @Override 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); } private void initView() { accountLV= (ListView) findViewById(R.id.accountLV); nameET= (EditText) findViewById(R.id.nameET); balanceET= (EditText) findViewById(R.id.balanceET); accountLV.setOnItemClickListener(new MyOnItemClickListener()); } public void add(View v){ String name=nameET.getText().toString().trim(); String balance=balanceET.getText().toString().trim(); 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("");} private class MyAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View item=convertView!=null?convertView:View.inflate(getApplicationContext(),R.layout.item,null); TextView idTV= (TextView) item.findViewById(R.id.idTV); TextView nameTV= (TextView) item.findViewById(R.id.nameTV); TextView balanceTV= (TextView) item.findViewById(R.id.balanceTV); final Account a=list.get(position); idTV.setText(a.getId() +""); nameTV.setText(a.getName()+""); balanceTV.setText(a.getBalance()+""); ImageView upIV= (ImageView) item.findViewById(R.id.upIV); ImageView downIV= (ImageView) item.findViewById(R.id.downIV); ImageView deleteIV= (ImageView) item.findViewById(R.id.deleteIV); upIV.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { a.setBalance(a.getBalance()+1); notifyDataSetChanged(); dao.update(a); } }); downIV.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { a.setBalance(a.getBalance()-1); notifyDataSetChanged(); dao.update(a); } }); deleteIV.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(); } }; AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); builder.setTitle("确定要删除吗?"); builder.setPositiveButton("确定",listener); builder.setNegativeButton("取消",null); builder.show(); } }); return item; } } private class MyOnItemClickListener implements android.widget.AdapterView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Account a=(Account)parent.getItemAtPosition(position); Toast.makeText(getApplicationContext(),a.toString(),Toast.LENGTH_LONG).show(); } }}
所有代码编写完成,效果图如下:
点击某一个商品,弹出toast。
对商品进行删除
删除后
价格进行修改
修改后的价格
0 0
- 数据库操作之商品展示
- shu数据库操作——商品展示
- SQLite数据库应用之商品展示
- SQLite数据库---ListView控件之商品展示案例
- SQLite数据库---ListView控件之商品展示案例
- SQLite数据库---ListView控件之商品展示案例
- SQLite数据库--案例:商品展示
- Android案例之商品展示
- Android——操作数据库-增删改查-案例《商品展示》
- SQLite数据库——案例:商品展示
- ListView和SQLite数据库案例--商品展示
- ListView和SQLite数据库案例--商品展示
- 商品展示,SQLite数据库的使用
- 用jsp展示数据库的商品:
- Android——(SQLite数据库)ListView控件之商品展示案例
- 安卓开发之商品展示--关于Listview的使用以及数据库的增删改查
- 商品展示
- 商品展示
- Perhaps you are running on a JRE rather than a JDK?
- 并查集
- Android中EditText的inputType属性的详解
- 读程序
- ListView——适配器
- 数据库操作之商品展示
- SQL批量行转列已经多个字段拼接
- 数字货币钱包数据迁移和导入
- centos 使用pip 安装mysqldb错误
- Qt获取所给文件夹下的所有文件夹列表
- 配置系统环境变量的两种方法
- 编译curl for android
- 回溯法
- VS C++ win32 更改static文本字体和文本背景