【实例简介】
【实例截图】
【核心代码】
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技能树使用JDBC操作数据库数据库操作91449 人正在系统学习中 相关资源:校园自助点餐APP的开发.rar-互联 文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!