商品展示案例
来源:互联网 发布:python数据类型 编辑:程序博客网 时间:2024/05/18 01:42
1.创建程序
首先创建一个商品展示的布局文件,代码如下所示:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_shang" 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="bzu.edu.cn.a17lab08.ShangActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/ii1" ><EditText android:layout_width="150dp" android:layout_height="wrap_content" android:hint="商品名称" android:layout_weight="2" android:id="@+id/e1" android:inputType="textPersonName"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="金额" android:layout_marginRight="80dp" android:layout_weight="1" android:id="@+id/e2" android:inputType="number" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="add" android:id="@+id/i1" android:src="@android:drawable/ic_input_add" /> </LinearLayout> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/l1" android:layout_below="@id/ii1">
</ListView></RelativeLayout>
上述代码中ImageView有一些系统自定义的,直接可以使用。2.创建一个ListView Item布局
此布局文件主要对Item进行布局调整,代码如下:
<?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="match_parent"><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" android:textColor="#000000" android:layout_weight="1" android:textSize="20sp" android:id="@+id/t1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="毛巾" android:textColor="#000000" android:layout_weight="2" android:textSize="20sp" android:id="@+id/t2"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="20" android:textColor="#000000" android:layout_weight="2" android:textSize="20sp" android:id="@+id/t3"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/addup" android:src="@android:drawable/arrow_up_float" android:layout_marginBottom="2dp"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/adddown" android:src="@android:drawable/arrow_down_float" android:layout_marginBottom="2dp"/> </LinearLayout> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/delete" android:src="@android:drawable/ic_menu_delete"/></LinearLayout>
3.创建数据库创建数据库属于数据操作,因此需要在包下再创建一个名为dao的包,并在该包下定义一个MyHelper类继承自SQLiteOpenHelper,创建数据库的代码如下:
package bzu.edu.cn.a17lab08.dao;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.provider.Settings;public class MyHelper extends SQLiteOpenHelper { public MyHelper(Context context){ super(context,"edu.db",null,2); } 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 sqLiteDatabase, int oldVersion, int newVersion) { System.out.println("onUpgrade"); }}
4.创建Account类在操作数据库时将数据存放至一个JavaBean对象中操作起来会比较方便。因此需要在包下创建一个bean包存放JavaBean类然后包下创建一个Account类,代码如下:
package bzu.edu.cn.a17lab08.bean;public class Account { private Long id; private String name; private Integer balance; 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 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 String toString(){ return "[序号:"+id+",商品名称:"+name+",金额:"+balance+"]"; }}
5.创建数据操作逻辑类
前面创建了数据库和JavaBean,接下来需要编写数据逻辑操作类。在包下创建一个AccountDao类用于操作数据。具体代码如下:
package bzu.edu.cn.a17lab08.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 bzu.edu.cn.a17lab08.bean.Account;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(); } 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; 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; }}
该类创建了对数据进行增删改查操作的方法。在当中db.insert()方法调用了db.insert()方法,这个方法第二个参数如果传入null,是无法插入一条空数据的。如果
想插入一条空数据,第二个参数必须写一个列名,传入这个列名是用来拼接SQL语句的,例如,INSERT INTO account(null)VALUES(NULL).
6.编写界面交互代码
数据库的操作完成之后需要界面与数据库进行交互,用于实现将数据库中的数据以ListView的形式展示在界面上,代码如下:
package bzu.edu.cn.a17lab08;import android.content.DialogInterface;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;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 bzu.edu.cn.a17lab08.dao.AccountDao;import bzu.edu.cn.a17lab08.bean.Account;public class ShangActivity extends AppCompatActivity { private List<Account> list; private AccountDao dao; private EditText e1; private EditText e2; private MyAdapter adapter; private ListView lv; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shang); initView(); dao = new AccountDao(this); list=dao.queryAll(); adapter = new MyAdapter(); lv.setAdapter(adapter); } private void initView(){ lv = (ListView) findViewById(R.id.l1); e1 = (EditText) findViewById(R.id.e1); e2 = (EditText) findViewById(R.id.e2); lv.setOnItemClickListener(new MyOnItemClickListener()); } public void add(View v) { String name = e1.getText().toString().trim(); String balance = e2.getText().toString().trim(); Account a = new Account(name, balance.equals("") ?0 : Integer.parseInt(balance)); dao.insert(a); list.add(a); adapter.notifyDataSetChanged(); lv.setSelection(lv.getCount() - 1); e1.setText(""); e2.setText(""); } private class MyAdapter extends BaseAdapter { public int getCount() { return list.size(); } public Object getItem(int position) { return list.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { View item = convertView != null ? convertView : View.inflate( getApplicationContext(), R.layout.item, null ); TextView t1 = (TextView) item.findViewById(R.id.t1); TextView t2 = (TextView) item.findViewById(R.id.t2); TextView t3 = (TextView) item.findViewById(R.id.t3); final Account a = list.get(position); t1.setText(a.getId() + ""); t2.setText(a.getName()); t3.setText(a.getBalance() + ""); ImageView up = (ImageView) item.findViewById(R.id.addup); ImageView down = (ImageView) item.findViewById(R.id.adddown); ImageView delete = (ImageView) item.findViewById(R.id.delete); up.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { a.setBalance(a.getBalance() - 1); notifyDataSetChanged(); dao.update(a); } }); down.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { a.setBalance(a.getBalance() - 1); notifyDataSetChanged(); dao.update(a); } }); delete.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { final 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(ShangActivity.this); builder.setTitle("确定要删除吗?"); builder.setPositiveButton("确定", listener); builder.setNegativeButton("取消", null); builder.show(); } }); return item; }} private class MyOnItemClickListener implements AdapterView.OnItemClickListener { public void onItemClick(AdapterView<?> parent, View view, int position, long id){ Account a = (Account)parent.getItemAtPosition(position); Toast.makeText(getApplicationContext(),a.toString(),Toast.LENGTH_SHORT).show(); }}}
《商品展示》的基本代码已经完成。效果图如下:
0 0
- 商品展示案例
- 商品展示案例
- 商品展示案例
- Android案例-商品展示
- Android商品展示案例
- 案例 商品展示
- 案例—商品展示
- Android案例-商品展示
- 商品展示案例
- 商品展示案例
- 商品展示案例
- Android案例:商品展示
- 商品展示案例
- 商品展示案例
- 商品展示案例
- Android 案例:商品展示
- 商品展示的案例
- 商品展示案例
- 基础知识(一)
- 快速排序
- 单链表(合并单链表)
- C字符串函数归总
- SpringMVC
- 商品展示案例
- L0、L1与L2范数各自功能
- 回溯-子集问题
- 数据库 用sql语句创建表
- 安装Visual studio注意事项
- 编码:隐匿在计算机背后的语言(1-3章)
- 【计算机原理】并发 并行 异步 同步 阻塞 非阻塞
- Redis分布式事务锁实现
- 当你们羡慕IT程序员月薪两三万时,请看这些科技公司的夜晚