商品展示

来源:互联网 发布:人员管理系统 java 编辑:程序博客网 时间:2024/04/28 07:39

在编写代码之前,我们要做一下页面布局。
这里写图片描述
这里写图片描述
这个布局中,我们同样是运用了布局的起嵌套,在其中加入ListView。

<?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:orientation="vertical"    android:layout_margin="8dp"    tools:context="com.example.administrator.shopdisplay.MainActivity">    <LinearLayout        android:id="@+id/addshop"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        >        <EditText            android:id="@+id/shopName"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:hint="商品名称"            android:inputType="textPersonName"/>        <EditText            android:id="@+id/shopPrice"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:hint="金额"            android:inputType="number"/>        <ImageView            android:onClick="add"            android:id="@+id/addIV"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@android:drawable/ic_input_add"/>    </LinearLayout>    <ListView        android:id="@+id/shopList"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_below="@id/addshop"></ListView></LinearLayout>

接下来是,处理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="13"        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:singleLine="true"        android:text="PQ"        android:textColor="#000000"        android:textSize="20sp"/>    <TextView        android:id="@+id/priceTV"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:layout_weight="2"        android:singleLine="true"        android:text="123465"        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/downTV"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@android:drawable/arrow_down_float"/>    </LinearLayout>    <ImageView        android:id="@+id/deleteTV"        android:layout_width="25dp"        android:layout_height="25dp"        android:src="@android:drawable/ic_menu_delete"        /></LinearLayout>

因为,要存储商品信息,所以我们要创建一个类,以便于链接数据库,在此同时我们创建一个实体类,用于写构造方法。

package com.example.administrator.shopdisplay.entity;/** * Created by Administrator on 2017/4/24. */public class Account {    private Long id;    private String name;    private int balance;    public Account(Long id, int balance, String name) {        this.id = id;        this.balance = balance;        this.name = name;    }    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    }    public Integer getBalance() {        return balance;    }    public void setBalance(Integer balance) {        this.balance = balance;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Account(int i, String name){        super();    }    public String toString(){        return "{序号:"+id+",商品名称:"+name+",余额:"+balance+"}";    }}

我们为了便于操作,可以把增删改查的操作,封装到一个类里面。

package com.example.administrator.shopdisplay.dao;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.example.administrator.shopdisplay.entity.Account;import java.util.ArrayList;import java.util.List;/** * Created by 赵藤安 on 2017/4/24. */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.getReadableDatabase();        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,balance,name));        }        c.close();        db.close();        return list;    }}

接下来,就是MainActivity中的逻辑代码。

package com.example.administrator.shopdisplay;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;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 com.example.administrator.shopdisplay.dao.AccountDao;import com.example.administrator.shopdisplay.entity.Account;import java.util.List;public class MainActivity extends Activity {    private List<Account> list;    private AccountDao dao;    private EditText nameET;    private EditText priceET;    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.shopList);        nameET = (EditText) findViewById(R.id.shopName);        priceET = (EditText) findViewById(R.id.shopPrice);        accountLV.setOnItemClickListener(new MyOnItemClickListener());    }    public void add(View v){        String name = nameET.getText().toString().trim();        String balance = priceET.getText().toString().trim();        Account a = new Account(balance.equals("")?0                :Integer.parseInt(balance),name);        dao.insert(a);        list.add(a);        adapter.notifyDataSetChanged();        accountLV.setSelection(accountLV.getCount()-1);        nameET.setText("");        priceET.setText("");    }    private class MyAdapter extends BaseAdapter {        private List<Account> list;        @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) findViewById(R.id.nameTV);            TextView priceTV = (TextView) findViewById(R.id.priceTV);            final Account a = list.get(position);            idTV.setText(a.getId()+"");            nameTV.setText(a.getName());            priceTV.setText(a.getBalance()+"");            ImageView upIV = (ImageView) item.findViewById(R.id.upIV);            ImageView downIV = (ImageView) item.findViewById(R.id.downTV);            ImageView deleteIV = (ImageView) item.findViewById(R.id.deleteTV);            //向上箭头的点击事件            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(){                                @Override                                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.setPositiveButton("取消",listener);                    builder.show();                }            });            return item;        }    }    private class  MyOnItemClickListener implements 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_SHORT).show();        }    }}
0 0