//获取当前用户所有历史订单数据 public ArrayList<Order> getOrdersbyTableIndex(String username){ //map表key是订单编号 ArrayList<Order> orders = new ArrayList<Order>(); HashMap<String, ArrayList<Dish>> ordersmap = new HashMap<String, ArrayList<Dish>>(); ArrayList<Dish> dishes = new ArrayList<Dish>(); if(TextUtils.isEmpty(username)){ return orders; } SQLiteDatabase db = this.getWritableDatabase(); Cursor cur = db.rawQuery("SELECT * FROM "+TABLE_ORDER, null); if (cur != null) { if (cur.moveToFirst()) { do { int numColumn = cur.getColumnIndex(DISH_USERNAME); String o_tableindex = cur.getString(numColumn); if(username.equals(o_tableindex)){ int COLID = cur.getColumnIndex(ORDER_ID); String d_id = cur.getString(COLID); if(ordersmap.containsKey(d_id)){ dishes = ordersmap.get(d_id); }else{ dishes = new ArrayList<Dish>(); ordersmap.put(d_id, dishes); } int NUMPASS = cur.getColumnIndex(DISH_NAME); String d_name = cur.getString(NUMPASS); int COLPRICE = cur.getColumnIndex(DISH_PRICE); int d_price = Integer.parseInt(cur.getString(COLPRICE).toString()); int COLPIC = cur.getColumnIndex(DISH_PIC); int d_pic = Integer.parseInt(cur.getString(COLPIC).toString()); int COLNUM = cur.getColumnIndex(DISH_NUM); int d_num = Integer.parseInt(cur.getString(COLNUM).toString()); int COLSHOP = cur.getColumnIndex(DISH_SHOP); String c_shop = cur.getString(COLSHOP); Dish dish = new Dish(d_name,d_price,d_pic,d_num, c_shop); dishes.add(dish); } }while( cur.moveToNext()); } } db.close(); for(String key: ordersmap.keySet()){ Order order = new Order(key, ordersmap.get(key)); orders.add(order); } System.out.print("获取订单数量:" + orders.size()); return orders; }
3 回答
已采纳
alionSSS
TA贡献57条经验 获得超82个赞
0 0我来拿分来了!
public ArrayList<Order> getOrdersbyTableIndex(String username){
//map表key是订单编号
ArrayList<Order> orders = new ArrayList<Order>();
HashMap<String, ArrayList<Dish>> ordersmap = new HashMap<String, ArrayList<Dish>>();
ArrayList<Dish> dishes = new ArrayList<Dish>();
if(TextUtils.isEmpty(username)){
return orders;
}
SQLiteDatabase db = this.getWritableDatabase();
Cursor cur = db.rawQuery("SELECT * FROM "+TABLE_ORDER, null);
if (cur != null) { //防止Cursor为null
if (cur.moveToFirst()) { //cur是一个指针,此处是说将指针移动到第一个位置。同时,cur.moveToFirst()的返回值是一个boolean,为ture证明有数据
do {
int numColumn = cur.getColumnIndex(DISH_USERNAME);//根据DISH_USERNAME拿到对应列的index
String o_tableindex = cur.getString(numColumn);//根据上面返回的numColumn即index,拿到对应的值
if(username.equals(o_tableindex)){//如果username和o_tableindex相等
int COLID = cur.getColumnIndex(ORDER_ID);
String d_id = cur.getString(COLID);
if(ordersmap.containsKey(d_id)){//如果ordersmap这个集合包含了d_id这个key
dishes = ordersmap.get(d_id);//根据key拿到对应的value,此处value是一个ArrayList<Dish>集合
}else{
//如果d_id不存在,就向ordersmap里面存
dishes = new ArrayList<Dish>();
ordersmap.put(d_id, dishes);
}
//下面代码方法和上面一样,我只写不同的
int NUMPASS = cur.getColumnIndex(DISH_NAME);
String d_name = cur.getString(NUMPASS);
int COLPRICE = cur.getColumnIndex(DISH_PRICE);
int d_price = Integer.parseInt(cur.getString(COLPRICE).toString());//把String转换为int(可能你数据库存的String类型的吧= =)
int COLPIC = cur.getColumnIndex(DISH_PIC);
int d_pic = Integer.parseInt(cur.getString(COLPIC).toString());
int COLNUM = cur.getColumnIndex(DISH_NUM);
int d_num = Integer.parseInt(cur.getString(COLNUM).toString());
int COLSHOP = cur.getColumnIndex(DISH_SHOP);
String c_shop = cur.getString(COLSHOP);
Dish dish = new Dish(d_name,d_price,d_pic,d_num, c_shop);
dishes.add(dish);
}
}while( cur.moveToNext());
}
}
db.close();//关闭数据库,数据库用完必须关闭
for(String key: ordersmap.keySet()){ //增强for循环,即foreach。此处遍历map,ketSet()是拿到对应map的key
Order order = new Order(key, ordersmap.get(key));//key和value
orders.add(order);
}
System.out.print("获取订单数量:" + orders.size());
return orders;
} - 3 回答
- 0 关注
- 1444 浏览
添加回答
举报
0/150
提交
取消
