【实例简介】

【实例截图】

【核心代码】

package food.test.zqz;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.DialogInterface.OnClickListener;

import android.os.Bundle;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.BaseAdapter;

import android.widget.EditText;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import android.widget.AdapterView.OnItemClickListener;

import food.test.R;

import food.test.domain.Food;

import food.test.util.DButil;

import food.test.wjf.ShopCart;

import food.test.wjf.ShopCartShowAll;

import food.test.zqz.util.GetNetWorkData;

public class ActivityShowFoodByType extends Activity {

// 用于存储需要显示的数据

private ArrayList> data = new ArrayList>();

// 用于接收服务端

private ArrayList serverFoods = new ArrayList();

private GridView gv = null;

public final static int SHOW_FOOD_DETAIL = 0;

public final static int CONFIRM_PURCHASE = 1;

public final static int LOOK_UP_SHOPPING = 2;

private DButil db;

// 用户在界面上选中的所有商品信息

public Food selectedFood = new Food();

/**

* 根据菜品类型,获取服务器端的菜品信息

*

* @return

*/

private ArrayList getServerFoodInfoByType(int flagType) {

serverFoods.clear();

HashMap request = new HashMap();

// 获得服务端数据"根据约定的字符串格式"

String resData = GetNetWorkData.getConnectionPost(

GetNetWorkData.URL_AllFood, request).toString();

// String resData =

// "[foodName=test;foodType=0;foodPrice=33.3f;foodImage=500008.jpg],[foodPrice=44;foodType=0;foodName=红烧肉;foodImage=500022.jpg]";

ArrayList serverAllFoods = GetNetWorkData

.decodeResponseData(resData);

Food oneFood;

Iterator it = serverAllFoods.iterator();

while (it.hasNext()) {

oneFood = it.next();

if (oneFood.foodType == flagType) {

serverFoods.add(oneFood);

}

}

return serverFoods;

}// end of getServerData()

/**

* 准备显示在界面的数据

*/

private void prepareView() {

data.clear();

// 获取要显示菜品的类型

Intent intent = this.getIntent();

int showType = intent.getFlags();

// 获取指定类型的菜品

ArrayList assignedFoods = getServerFoodInfoByType(showType);

// 设定界面显示数据

HashMap item;

for (Food food : assignedFoods) {

item = new HashMap();

item.put("price", "价格:" food.foodPrice);

item.put("name", "菜名:" food.foodName);

item.put("icon", food.foodImage);

data.add(item);

}

}// end of prepareView()

public void onCreate(Bundle saved) {

super.onCreate(saved);

setContentView(R.layout.show);

try {

gv = (GridView) this.findViewById(R.id.grid);

prepareView();

MyGridViewAdapter mgva = new MyGridViewAdapter(this);

gv.setAdapter(mgva);

// 监听GridView点击事件

gv.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

selectedFood = serverFoods.get(position);

setTitle("测试选中事件---" selectedFood.foodId);

Log.e("----test selected---", "" selectedFood.foodId);

ActivityShowFoodByType.this.openOptionsMenu();

Log.e("test GridView onClickListener", "------");

}

});

} catch (Exception e) {

e.printStackTrace();

}

}

protected void onRestart() {

super.onRestart();

Log.e("TabIntent------", "test--onRestart()" getIntent().getFlags());

}

protected void onResume() {

super.onResume();

prepareView();

Log.e("TabIntent------", "test--onResume()" getIntent().getFlags());

}

protected void onStart() {

super.onStart();

Log.e("TabIntent------", "test--onStart()" getIntent().getFlags());

}

protected void onStop() {

super.onStop();

Log.e("TabIntent------", "test--onStop()" getIntent().getFlags());

}

protected void onPause() {

super.onPause();

Log.e("TabIntent------", "test--onPause()" getIntent().getFlags());

}

/**

* 添加功能Menu键

*/

public boolean onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);

menu.add(1, SHOW_FOOD_DETAIL, Menu.CATEGORY_SYSTEM, "菜品详情").setIcon(

R.drawable.zqz_menu_lookdetail);

menu.add(1, CONFIRM_PURCHASE, Menu.CATEGORY_SYSTEM, "加入购物车").setIcon(

R.drawable.zqz_menu_purchase);

return true;

}

/**

* 监听用户选中事件

*/

public boolean onOptionsItemSelected(MenuItem item) {

super.onOptionsItemSelected(item);

switch (item.getItemId()) {

case SHOW_FOOD_DETAIL:

// 跳转到详情显示页面

Intent intent = new Intent(ActivityShowFoodByType.this, FoodDetail.class);

intent.putExtra("foodId", selectedFood.foodId);

intent.putExtra("foodName", selectedFood.foodName);

intent.putExtra("foodDescri", selectedFood.foodDescri);

intent.putExtra("foodType", selectedFood.foodType);

intent.putExtra("foodPrice", selectedFood.foodPrice);

intent.putExtra("foodImage", selectedFood.foodImage);

startActivity(intent);

break;

case CONFIRM_PURCHASE:

Log.e("test==", "" CONFIRM_PURCHASE);

if (selectedFood.foodId != 0) {

// 跳转到购物车界面,并且提示用户输入要几份菜品

final View zqz_dialog = LayoutInflater.from(this).inflate(

R.layout.zqz_dialog, null);

// 提示用户输入数量

new AlertDialog.Builder(this).setTitle("选购").setIcon(

R.drawable.tap_vegetarian2).setView(zqz_dialog)

.setPositiveButton("订购", new OnClickListener() {

public void onClick(DialogInterface dialog,

int which) {

EditText etnumber = (EditText) zqz_dialog

.findViewById(R.id.zd_etnumber);

String etnumberStr = etnumber.getText()

.toString().trim();

if (!etnumberStr.equals("")

&& etnumberStr != null) {

db = new DButil(ActivityShowFoodByType.this);

ShopCart shopcart = new ShopCart();

shopcart.setFoodId(selectedFood.foodId);

shopcart.setFoodName(selectedFood.foodName);

shopcart

.setFoodPrice(selectedFood.foodPrice);

int foodnum = Integer.parseInt(etnumberStr);

shopcart.setFoodNum(foodnum);

// float sumprices = selectedFood.foodPrice

// * foodnum;

float sumprices = getTotalMoney(

selectedFood.foodPrice, foodnum);

shopcart.setSumPrices(sumprices);

db.addFood(shopcart);

db.close();

Log.e("-------- shopcart", "" shopcart);

Intent intent = new Intent(

ActivityShowFoodByType.this,

ShopCartShowAll.class);

Bundle extras = new Bundle();

extras

.putInt("foodId",

selectedFood.foodId);

extras.putFloat("foodPrice",

selectedFood.foodPrice);

extras.putInt("foodNumber", Integer

.parseInt(etnumberStr));

extras.putString("foodName",

selectedFood.foodName);

extras.putString("用户名", "");

extras.putInt("用户Id", 0);

intent.putExtras(extras);

startActivity(intent);

} else {

Toast.makeText(ActivityShowFoodByType.this,

"请输入数量", Toast.LENGTH_SHORT).show();

}

}

}).setNegativeButton("取消", new OnClickListener() {

public void onClick(DialogInterface dialog,

int which) {

}

}).create().show();

} else {

Toast.makeText(ActivityShowFoodByType.this, "请选中菜品",

Toast.LENGTH_LONG).show();

}

break;

}// end of switch

return true;

}// end of onOptionsItemSelected()

/**

* 计算(可能含小数位)总金额

*/

private float getTotalMoney(float price, int number) {

BigDecimal bd_price = new BigDecimal(price);

BigDecimal bd_number = new BigDecimal(number);

return bd_price.multiply(bd_number).floatValue();

}// end of getTotalMoney()

/**

* Bean对象,用来封装GridView中的一个数据

*

* @author zhuqiuzhu

*

*/

public final class ViewHolder {

public ImageView foodImagView;

public TextView foodNameView;

public TextView foodPriceView;

}

class MyGridViewAdapter extends BaseAdapter {

LayoutInflater mInflater = null;

public MyGridViewAdapter(Context ctx) {

mInflater = LayoutInflater.from(ctx);

}

// 返回需要显示的数据集合的size

public int getCount() {

return data.size();

}

// 返回指定集合位置的子项数据

public Object getItem(int position) {

return data.get(position);

}

// 返回指定集合子项的ID号

public long getItemId(int position) {

return position;

}

// 返回某一条数据的视图

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

// 若GridView 传进来的代表上一行数据的视图参数arg1为空,代表当前是第一行数据

// 这个时候则解析代表一行数据的视图展现的xml文件zqz_gridview.xml

// 并且把视图里的控件和bean对象里的控件关联起来

if (convertView == null) {

holder = new ViewHolder();

convertView = mInflater.inflate(R.layout.zqz_gridview, null);

holder.foodImagView = (ImageView) convertView

.findViewById(R.id.zg_gridicon);

holder.foodNameView = (TextView) convertView

.findViewById(R.id.zg_gridname);

holder.foodPriceView = (TextView) convertView

.findViewById(R.id.zg_gridprice);

// 设置标识

convertView.setTag(holder);

} else {

// 如果传进来的arg1不为空,则我们可以沿用上一行数据的视图,

holder = (ViewHolder) convertView.getTag();

}

// 只是需要将数据替换成本行的数据即可

/*-------------图片的显示实现--------------*/

String fi = ((HashMap) data.get(position)).get(

"icon").toString();

String mUrl = GetNetWorkData.getAssignedFoodBitmapUrl(

GetNetWorkData.URL, fi);

GetNetWorkData.setAssignedFoodBimapView(mUrl, holder.foodImagView);

/*----------------------------------------*/

holder.foodNameView.setText(((HashMap) data

.get(position)).get("name").toString());

holder.foodPriceView.setText(((HashMap) data

.get(position)).get("price").toString());

return convertView;

}

}// end of MyGridViewAdapter

}

java点餐app源码_android 点餐app源码(含服务端以及数据库脚本)相关推荐

  1. 糗事百科 android源码,Android高仿糗事百科(含服务端)

    Android高仿糗事百科(含服务端) 积分: 23 智慧币 积分: 3 智慧币 [1.00元 ] 包含内容: 源码,全套工具 详情描述 如遇视频不清晰,请最大化观看演示 以下仅列出部分功能,全部功能 ...

  2. java comet_用java实现comet,基于 HTTP长连接的实现,用于从服务端实时发送信息到客户端...

    http://homelink.javaeye.com/blog/293328#comments 参考文档 http://www.ibm.com/developerworks/cn/web/wa-lo ...

  3. epel源mysql版本_linux增加epel源,yum安装nignx,脚本安装mysql服务端,shell脚本监控网站页面...

    epel是一种yum仓库,里面提供了更多.更丰富linux软件,但是,它不是默认yum仓库,我们需要手工添加这个yum源. 添加epel源 然后,找到fedora-epel, 在列表里找到:6serv ...

  4. linux增加epel源,yum安装nignx,脚本安装mysql服务端,shell脚本监控网站页面

    epel是一种yum仓库,里面提供了更多.更丰富linux软件,但是,它不是默认yum仓库,我们需要手工添加这个yum源. 添加epel源 参考:http://freeloda.blog.51cto. ...

  5. 微信APP支付接入流程(含服务端,非第三方)

    此文章与简书内容同步更新https://www.jianshu.com/p/3dac1db27247 首先是微信APP的支付流程,看着很多流程,其实主要的大致分为以下几个步骤 1.客户端选择商品下单( ...

  6. java神秘岛_我的世界1.4.2喵喵苍炎冒险整合包1.1含服务端(含IC,BC,暮色,神秘岛,,PAM世界等MOD)...

    名字就叫:喵喵苍炎冒险整合包v1.1 嗯 = =为啥叫这个呢=W=,因为这次的整合是我和苍炎の传说共同完成的喵~~ 所以改名了-W- 这回的整合包更新很多MOD,并且加了很多很有乐趣的MOD. 并且把 ...

  7. APP接入支付宝支付完整流程及踩坑记录(含服务端)

    本篇主要讲解APP接入支付宝支付完整流程,包含服务端,内容稍长 要接入支付宝支付,需要将APP在支付宝平台创建应用,提交审核,并进行商户签约以获得支付能力 详细参阅官方文档https://docs.o ...

  8. 仿qq空间java源码_android 发说说动态源码下载(高仿QQ空间,含图片多选)

    [实例简介]仿qq发动态,图片发布效果 [实例截图] [核心代码] package com.king.photo.activity; import android.annotation.Suppres ...

  9. SwiftUI 精品项目之完整MOOC幕课iOS项目 含服务端 轮播欢迎页面(教程含源码)

    实战需求 SwiftUI 精品项目之完整MOOC幕课iOS项目 (教程含源码) 本文价值与收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 自动轮播 个性化注册界面 个人信息界面 带f ...

  10. 夺宝答题王小程序完整源码(含前端/后端以及数据库脚本)

    [实例简介] 环境要求: centos php7.0 mysql5.6,t'hinkphp实现的后端 域名配置好https 建议使用宝塔环境一键配置 将后台代码上传至网站根目录 修改数据库配置文件\d ...

最新文章

  1. bluez 设置绑定pin码_国家工信部重要提醒:一定要设置这个密码!
  2. mysql group by 区间_SQL按区间进行group by
  3. html5退出全屏触发的方法_好程序员web前端分享HTML5常见面试题集锦二
  4. Idea maven项目不能新建package和class的解决
  5. 《剑指Offer》37:序列化二叉树
  6. 吴恩达《机器学习》学习笔记十三——机器学习系统(补充)
  7. php 如何模拟浏览器,利用php的curl扩展进行模拟浏览器访问网页
  8. thinkphp制作响应式404跳转页实例教程
  9. Django - 两周从入门到熟练工
  10. JAVA中properties基本用法
  11. Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误解决方案
  12. UCC国际洗衣:风雨26年,铸就干洗行业实力品牌
  13. Linux新手快速入门(万字超详细)
  14. 四川绵阳动感地带学生套餐资费备忘
  15. Java语言十五讲(总结)
  16. windows 系统安装苹果操作系统
  17. 多人网络(Valve开发文档翻译[起源引擎])(一)
  18. 开启这些隐藏功能,让你的Chrome更加强大
  19. Linux 网络编程: daytime Service
  20. ACCU天气API以及Okhttp、Retrofit、RxJava的使用

热门文章

  1. vue怎么在地址栏隐藏路由
  2. windows10搜索卡死(有出现Cortana的请看这篇文章)
  3. dojo和ArcGIS
  4. html规范eml文件,eml 文件头解析
  5. 华为选用ServiceHot ITSM提升运维服务能力
  6. 德州达拉斯大学计算机录取要求,德克萨斯大学达拉斯分校申请条件(德克萨斯大...
  7. excel高级筛选怎么用_Excel筛选功能这样用,再多数据我也不惧了
  8. 县级公立医院改革明年推开 今年再增700试点
  9. 佳能打印机手机显示未连接服务器,佳能打印机出现服务器设置密码
  10. @Deprecated注解