名称、数量和备注信息,将这些信息保存到服务器数据库OrderDetailTbl中,这里点菜名称编号引用MenuTbl表中的数据,为了提高程序运行效率,将服务器数据库中的数据同步到客户端SQLite数据库中,程序提供了数据同步功能。数量由操作员输入。 下单的过程是将开桌信息和点菜信息保存到服务器数据库OrderTbl表中和OrderDetailTbl表中的过程。 点餐功能具体实现步骤如下所示。 1) 在工程res\\laout\\目录下创建一个名称为“order.xml”的布局文件,该文件外层使用LinearLayout布局,内层嵌套TableLayout。TableLayout中有三行:第一行是一个TextView和一个Spinner,提示操作员选择桌号;第二行是一个TextView和一个EditText,要求用户输入人数;第三行是三个Button按钮,分别是开桌。点菜、和下单。TableLayout下面有一个ListView用来显示客户点菜类表。
xmlns:android=\ android:id=\ android:orientation=\ android:layout_width=\ android:layout_height=\ > android:layout_width=\ 29 android:layout_height=\ android:stretchColumns=\> android:text=\桌号:\ android:id=\ android:layout_width=\ android:layout_height=\/> android:id=\ android:layout_width=\ android:layout_height=\/> android:text=\人数:\ android:id=\ android:layout_width=\ android:layout_height=\> android:id=\ android:layout_width=\ android:layout_height=\>
2) 创建一个名称为OrderActivity的Activity,该Activity继承Activity,在OrderActivity顶部声明使用到的实例,在OnCreate方法中初始化之。
package com.amaker.wlo;
import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP;
import android.app.Activity; import android.app.AlertDialog;
import android.content.ContentResolver; import android.content.DialogInterface; import android.content.SharedPreferences; import android.database.Cursor; import android.net.Uri;
31
import android.os.Bundle;
import android.view.LayoutInflater; import android.view.View;
import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast;
import com.amaker.util.HttpUtil;
public class OrderActivity extends Activity { // 桌号下拉列表
private Spinner tableNoSpinner; // 开桌、点菜和下单按钮
private Button orderBtn, addBtn, startBtn; // 人数编辑框
private EditText personNumEt; // 点菜列表
private ListView lv; // 开桌生成的订单Id private String orderId;
// 点菜列表中绑定的数据
private List data = new ArrayList(); // 点菜列表中具体的数据项 private Map map;
// ListView 的 Adapter private SimpleAdapter sa; // ListView 中显示的数据项
private String[] from = { \ // 引用的TextView Drawable ID private int[] to = new int[5];
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 为Activity设置界面布局 setContentView(R.layout.order);
32
}
// 实例化Spinner
tableNoSpinner = (Spinner) findViewById(R.id.tableNoSpinner); // 为桌号下拉列表Spinner绑定数据 setTableAdapter();
// 实例化开桌按钮
startBtn = (Button) findViewById(R.id.startButton02); // 为开桌按钮添加监听器
startBtn.setOnClickListener(startListener);
// 实例化点菜按钮
addBtn = (Button) findViewById(R.id.addMealButton01); // 为点菜按钮添加监听器
addBtn.setOnClickListener(addListener);
// 实例化下单按钮
orderBtn = (Button) findViewById(R.id.orderButton02); // 为下单按钮添加监听器
orderBtn.setOnClickListener(orderListener);
// 实例化人数编辑框
personNumEt = (EditText) findViewById(R.id.personNumEditText02);
// 实例化ListView
lv = (ListView) findViewById(R.id.orderDetailListView01); // 为点菜列表ListView绑定数据 setMenusAdapter();
3) 实现开桌功能,开桌功能是要求操作员选择桌号并输入人数,并将这些信息保存到服务器端MySQL数据库中的OrderTbl表中,这里需要为开桌号下拉列表Spinner绑定数据,为开桌按钮添加监听器,实现具体操作。
// 为桌号下拉列表Spinner绑定数据 private void setTableAdapter(){ // 访问本地SQLite数据库中桌号表的Uri Uri uri = Uri.parse(\ // 要选择桌号表中的列 String[] projection = { \
33