Android的数据存储与访问:一个商品展示

本次任务要求:开发一个购物车,并将购物车里的商品以列表的形式展示,并对购物车中的商品进行增删改查操作。

建立主界面,分为main和item.xml的layout文件。

建立GoodsDao.Java用来实现增删改查方法。主要代码如下:

 

age cn.bzu.edu.shopshow.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.bzu.edu.shopshow.entity.Goods;
import cn.bzu.edu.shopshow.db.DBHelper;
/**
 * Created by Administrator on 2017/4/27.
 */
public class GoodsDao {
    private DBHelper dbHelper;
    public GoodsDao(Context context){
    dbHelper=new DBHelper(context,1);
    }
    public void add(Goods goods){
        SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put("name",goods.getName());
        values.put("amount",goods.getAmount());
        long id=sqLiteDatabase.insert("goods",null,values);
        goods.setId(id);
        sqLiteDatabase.close();
    }
    public int delete(long id){
        SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();
        int count=sqLiteDatabase.delete("goods","_id=?",new String[]{id+""});
        sqLiteDatabase.close();
        return count;
    }
    public int update(Goods goods){
        SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put("name",goods.getName());
        values.put("amount",goods.getAmount());
        int count=sqLiteDatabase.update("goods",values,"_id=?",new String[]{goods.getId()+""});
        sqLiteDatabase.close();
        return count;
    }
    public List<Goods> queryAll(){
        List<Goods> goodsList=new ArrayList<>();
        SQLiteDatabase sqLiteDatabase=dbHelper.getReadableDatabase();
        Cursor cursor=sqLiteDatabase.query("goods",null,null,null,null,null,"amount desc");
        while (cursor.moveToNext()){
            long id=cursor.getLong(cursor.getColumnIndex("_id"));
            String name=cursor.getString(cursor.getColumnIndex("name"));
            int amount=cursor.getInt(cursor.getColumnIndex("amount"));
            Goods goods=new Goods(id,name,amount);
            goodsList.add(goods);
        }
        cursor.close();
        sqLiteDatabase.close();
        return goodsList;
    }
}DBHelper.java 用来实现数据存入手机存储代码如下:

package cn.bzu.edu.shopshow.db;

import Android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /**  * Created by Administrator on 2017/4/27.  */ public class DBHelper extends SQLiteOpenHelper {     public static final String CREATE_GOODS="create table goods(_id integer primary key autoincrement,name varchar(20),amount integer)";     public DBHelper(Context context, int version) {         super(context, "goods.db", null, version);     }     @Override     public void onCreate(SQLiteDatabase db) {         db.execSQL(CREATE_GOODS);     }     @Override     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {     } }

封装一个商品类对应的适配器GoodsAdapter.java:

package cn.bzu.edu.shopshow; import android.content.Context; import android.content.DialogInterface; import android.support.annotation.NonNull; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; import cn.bzu.edu.shopshow.dao.GoodsDao; import cn.bzu.edu.shopshow.entity.Goods; /**  * Created by Administrator on 2017/4/27.  */ public class GoodsAdapter extends ArrayAdapter<Goods>{     private int resounceId;     private GoodsDao goodsDao;     private List<Goods> goodsList;     public GoodsAdapter(Context context, int resource, List<Goods> objects, GoodsDao goodsDao) {         super(context, resource, objects);         resounceId=resource;         goodsList=objects;         this.goodsDao=goodsDao;     }     @NonNull     @Override     public View getView(int position, View convertView, ViewGroup parent) {         final Goods goods=getItem(position);         View view=null;         ViewHolder viewHolder;         if (convertView==null){             view=LayoutInflater.from(getContext()).inflate(resounceId,null);             viewHolder=new ViewHolder();             viewHolder.tvId=(TextView) view.findViewById(R.id.tvId);             viewHolder.tvName=(TextView)view.findViewById(R.id.tvName);             viewHolder.tvAmount=(TextView)view.findViewById(R.id.tvAmount);             viewHolder.ivUp=(ImageView) view.findViewById(R.id.ivUp);             viewHolder.ivDowm=(ImageView) view.findViewById(R.id.ivDown);             viewHolder.ivDelete=(ImageView) view.findViewById(R.id.ivDelete);             view.setTag(viewHolder);         }else {             view=convertView;             viewHolder=(ViewHolder)view.getTag();         }         viewHolder.tvId.setText(goods.getId()+"");         viewHolder.tvName.setText(goods.getName());         viewHolder.tvAmount.setText(goods.getAmount()+"");         viewHolder.ivDelete.setOnClickListener(new View.OnClickListener(){             @Override             public void onClick(View v){                 AlertDialog.Builder builder=new AlertDialog.Builder(getContext());                 builder.setTitle("你确定要删除吗?");                 builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {                     @Override                     public void onClick(DialogInterface dialog, int which) {                         goodsList.remove(goods);                         goodsDao.delete(goods.getId());                         notifyDataSetChanged();                     }                 });                 builder.setNegativeButton("cancle",null);                 builder.show();             }         });         viewHolder.ivUp.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 goods.setAmount(goods.getAmount()-1);                 goodsDao.update(goods);                 notifyDataSetChanged();             }         });         viewHolder.ivDowm.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 goods.setAmount(goods.getAmount()+1);                 goodsDao.update(goods);                 notifyDataSetChanged();             }         });         return view;     }     class ViewHolder{         TextView tvId;         TextView tvName;         TextView tvAmount;         ImageView ivUp;         ImageView ivDowm;         ImageView ivDelete;     }

}

MainActivity:

package cn.bzu.edu.shopshow; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import java.util.List; import cn.bzu.edu.shopshow.dao.GoodsDao; import cn.bzu.edu.shopshow.entity.Goods; public class MainActivity extends AppCompatActivity {     private EditText etName;     private EditText etAmount;     private ListView lvGoods;     private GoodsAdapter goodsAdapter;     private GoodsDao goodsDao;     private List<Goods> goodsList;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         lvGoods=(ListView)findViewById(R.id.lvGoods);         etName=(EditText) findViewById(R.id.etName);         etAmount=(EditText) findViewById(R.id.etAmount);         goodsDao=new GoodsDao(this);         goodsList=goodsDao.queryAll();         goodsAdapter=new GoodsAdapter(this,R.layout.item,goodsList,goodsDao);         lvGoods.setAdapter(goodsAdapter);     }     public void addGoods(View view){         String name=etName.getText().toString();         String amount=etAmount.getText().toString();         if (TextUtils.isEmpty(name)||TextUtils.isEmpty(amount))             return;         Goods goods=new Goods(name,Integer.parseInt(amount));         goodsDao.add(goods);         goodsList.add(goods);         goodsAdapter.notifyDataSetChanged();         etName.setText("");         etAmount.setText("");         Toast.makeText(this,"添加成功",Toast.LENGTH_LONG).show();     } }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值