Java教程

编写一个购物车程序,实现在界面中以列表的形式显示购物车的商品信息,商品信息包括商品名称、价格和数量功能,并能够对购物车中的商品信息进行增删改查

本文主要是介绍编写一个购物车程序,实现在界面中以列表的形式显示购物车的商品信息,商品信息包括商品名称、价格和数量功能,并能够对购物车中的商品信息进行增删改查,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/E_group_2"
    android:orientation="vertical"
    android:padding="10dp">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:background="@android:color/white"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/textViewStyle"
            android:text="名称:" />
        <EditText
            android:id="@+id/et_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:background="@null"
            android:padding="10dp"
            android:maxLines="1"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:background="@android:color/white"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/textViewStyle"
            android:text="价格:" />
        <EditText
            android:id="@+id/et_price"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:background="@null"
            android:padding="10dp"
            android:maxLines="1"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="@android:color/white"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/textViewStyle"
            android:text="数量:" />
        <EditText
            android:id="@+id/et_number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:background="@null"
            android:padding="10dp"
            android:maxLines="1"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="10dp">
        <Button
            android:id="@+id/add"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="添加"/>
        <Button
            android:id="@+id/query"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="查询"/>
        <Button
            android:id="@+id/update"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="修改"/>
        <Button
            android:id="@+id/delete"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="删除"/>
    </LinearLayout>
    <LinearLayout
        android:background="#ffffff"
        android:layout_marginTop="10dp"
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:text="名称"
            style="@style/listViewStyle"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"></TextView>
        <TextView
            android:text="价格"
            style="@style/listViewStyle"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"></TextView>
        <TextView
            android:text="数量"
            style="@style/listViewStyle"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"></TextView>
    </LinearLayout>
    <View
        android:layout_height="1px"
        android:layout_width="fill_parent">
    </View>
    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff">
    </ListView>
</LinearLayout>

listView_item.xml

<?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"
    android:orientation="horizontal"
    android:padding="10dp">
        <TextView
            android:id="@+id/tv_name"
            android:text="测试文本"
            android:layout_weight="1"
            style="@style/listViewStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
/>
        <TextView
            android:id="@+id/tv_price"
            android:text="测试文本"
            style="@style/listViewStyle"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
        <TextView
            android:id="@+id/tv_number"
            android:text="测试文本"
            style="@style/listViewStyle"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
</LinearLayout>

Goods.java

public class Goods {
    private String name;
    private String price;
    private String count;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getCount() {
        return count;
    }

    public void setCount(String count) {
        this.count = count;
    }
}

DbHelper

public class DbHelper extends SQLiteOpenHelper {
    SQLiteDatabase db;
    ContentValues contentValues=new ContentValues();
    public DbHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        db=this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table data(id Integer primary key autoincrement,name text,price text,count text )");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

    public boolean add(String name, String price, String count) {
        contentValues.put("name",name);
        contentValues.put("price",price);
        contentValues.put("count",count);
        long flag=db.insert("data",null,contentValues);
        return flag>0?true:false;
    }

    public List<Goods> query() {
        List<Goods> list=new ArrayList<>();
        Cursor cursor=db.query("data",null,null,null,null,null,null);
        if (cursor!=null){
            while (cursor.moveToNext()){
                Goods goods=new Goods();
                goods.setName(cursor.getString(1));
                goods.setPrice(cursor.getString(2));
                goods.setCount(cursor.getString(3));
                list.add(goods);
            }
        }
        return list;
    }

    public boolean update(String name, String price, String count) {
        contentValues.put("name",name);
        contentValues.put("price",price);
        contentValues.put("count",count);
        long flag=db.update("data",contentValues,"name=?",new String[]{name});
        return flag>0?true:false;
    }

    public List<Goods> get(String name) {
        List<Goods> list=new ArrayList<>();
        Cursor cursor=db.query("data",null,"name=?",new String[]{name},null,null,null);
        if (cursor!=null){
            while (cursor.moveToNext()){
                Goods goods=new Goods();
                goods.setName(cursor.getString(1));
                goods.setPrice(cursor.getString(2));
                goods.setCount(cursor.getString(3));
                list.add(goods);
            }
        }
        return list;
    }
    public boolean delete(String name) {
        long flag=db.delete("data","name=?",new String[]{name});
        return flag>0?true:false;
    }
}

MyAdapter

public class MyAdapter extends BaseAdapter {
    private List<Goods> list;
    private LayoutInflater layoutInflater;

    public MyAdapter(List<Goods> list, Context context) {
        this.list=list;
        this.layoutInflater =LayoutInflater.from(context);
    }

    @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) {
        ViewHolder viewHolder=null;
        if (convertView==null){
            viewHolder=new ViewHolder();
            convertView=layoutInflater.inflate(R.layout.listview_item,null,false);
            viewHolder.tv_showCount=convertView.findViewById(R.id.tv_number);
            viewHolder.tv_showName=convertView.findViewById(R.id.tv_name);
            viewHolder.tv_showPrice=convertView.findViewById(R.id.tv_price);
            convertView.setTag(viewHolder);
        }else {
            viewHolder=(ViewHolder) convertView.getTag();
        }
        Goods goods=(Goods) getItem(position);
        viewHolder.tv_showPrice.setText(goods.getPrice());
        viewHolder.tv_showName.setText(goods.getName());
        viewHolder.tv_showCount.setText(goods.getCount());
        return convertView;
    }
    class ViewHolder{
        TextView tv_showName,tv_showPrice,tv_showCount;
    }
}

MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private EditText et_name,et_price,et_count;
    private Button bt_add,bt_update,bt_delete,bt_query;
    private ListView lv_show;
    private DbHelper dbHelper;
    private String name,price,count;
    private List<Goods> goodsList;
    private MyAdapter myAdapter;
    private List<Goods> findList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        dbHelper=new DbHelper(MainActivity.this,"data.db",null,1);
        if (goodsList!=null){
            goodsList.clear();
        }
        goodsList=dbHelper.query();
        myAdapter=new MyAdapter(goodsList,MainActivity.this);
        lv_show.setAdapter(myAdapter);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.delete:
                name=et_name.getText().toString();
                if (dbHelper.delete(name)){
                    showToast("删除成功");
                    showListView();
                }else {
                    showToast("删除失败");
                }
                break;
            case R.id.add:
                name=et_name.getText().toString();
                price=et_price.getText().toString();
                count=et_count.getText().toString();
                if (name==null){
                    showToast("名称不能为空!");
                }else {
                    if (dbHelper.add(name,price,count)){
                        showToast("添加成功");
                        showListView();
                    }else {
                        showToast("添加失败");
                    }
                }
                break;
            case R.id.query:
                name=et_name.getText().toString();
                if (findList!=null){
                    findList.clear();
                }
                findList=dbHelper.get(name);
                myAdapter=new MyAdapter(findList,MainActivity.this);
                lv_show.setAdapter(myAdapter);
                break;
            case R.id.update:
                name=et_name.getText().toString();
                price=et_price.getText().toString();
                count=et_count.getText().toString();
                if (dbHelper.update(name,price,count)){
                    showToast("修改成功");
                    showListView();
                }else {
                    showToast("修改失败,名称不能修改");
                }
                break;
        }
    }
    private void init() {
        et_count=findViewById(R.id.et_number);
        et_name=findViewById(R.id.et_name);
        et_price=findViewById(R.id.et_price);
        bt_add=findViewById(R.id.add);
        bt_delete=findViewById(R.id.delete);
        bt_query=findViewById(R.id.query);
        bt_update=findViewById(R.id.update);
        lv_show=findViewById(R.id.listView);
        bt_add.setOnClickListener(this);
        bt_query.setOnClickListener(this);
        bt_delete.setOnClickListener(this);
        bt_update.setOnClickListener(this);
    }
    private void showToast(String msg){
        Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
    }
    private void showListView(){
        goodsList=dbHelper.query();
        myAdapter=new MyAdapter(goodsList,MainActivity.this);
        lv_show.setAdapter(myAdapter);
    }
}

效果展示


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这篇关于编写一个购物车程序,实现在界面中以列表的形式显示购物车的商品信息,商品信息包括商品名称、价格和数量功能,并能够对购物车中的商品信息进行增删改查的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!