Main Activity 一版
Main Activity 二版
Cafe.java
Order.java
原始碼:
Main Activity:
(cafebtn尚有問題)
package com.CodersCafe.www;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
public class MainActivity extends Activity {
private RadioGroup sizerg;
private RadioGroup icerg;
private RadioGroup sugarrg;
private RadioButton[] sizerb = new RadioButton[3];
private RadioButton[] icerb = new RadioButton[5];
private RadioButton[] sugarrb = new RadioButton[5];
private Button[] cafebtns = new Button[8];
private TextView tv_order;
private TextView tv_money;
// 咖啡名稱
private String[] cafeName = { "美式咖啡", "招牌咖啡", "海鹽咖啡", "拿鐵咖啡", "義式咖啡",
"卡布奇諾", "焦糖瑪奇朵", "北海道醇濃奶茶" };
// 尺寸名稱
private String[] sizeName = { "小杯", "中杯", "大杯" };
// 冰名稱
private String[] iceName = { "熱飲", "溫飲", "去冰", "半冰", "冰正常" };
// 糖名稱
private String[] sugarName = { "無糖", "三分糖", "半糖", "七分糖", "正常糖" };
// 咖啡價目表
private int[][] cafePrice = { { 35, 50, 60 }, { 45, 60, 70 },
{ 45, 60, 70 }, { 55, 70, 80 }, { 55, 70, 80 }, { 55, 70, 80 },
{ 65, 80, 90 }, { 65, 80, 90 } };
private int radioButtonCheckedColor = Color.RED;
private int radioButtonUnCheckedColor = Color.BLACK;
// 目前選擇大小杯
private int sizeIndex = 2;
// 目前選擇的冰度
private int iceIndex = 4;
// 目前選擇的糖
private int sugarIndex = 4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
processView();
processControl();
}
private void processView() {
sizerg = (RadioGroup) findViewById(R.id.sizerg);
icerg = (RadioGroup) findViewById(R.id.icerg);
sugarrg = (RadioGroup) findViewById(R.id.sugarrg);
sizerb[0] = (RadioButton) findViewById(R.id.sizerb1);
sizerb[1] = (RadioButton) findViewById(R.id.sizerb2);
sizerb[2] = (RadioButton) findViewById(R.id.sizerb3);
icerb[0] = (RadioButton) findViewById(R.id.icerb1);
icerb[1] = (RadioButton) findViewById(R.id.icerb2);
icerb[2] = (RadioButton) findViewById(R.id.icerb3);
icerb[3] = (RadioButton) findViewById(R.id.icerb4);
icerb[4] = (RadioButton) findViewById(R.id.icerb5);
sugarrb[0] = (RadioButton) findViewById(R.id.sugarrb1);
sugarrb[1] = (RadioButton) findViewById(R.id.sugarrb2);
sugarrb[2] = (RadioButton) findViewById(R.id.sugarrb3);
sugarrb[3] = (RadioButton) findViewById(R.id.sugarrb4);
sugarrb[4] = (RadioButton) findViewById(R.id.sugarrb5);
cafebtns[0] = (Button) findViewById(R.id.cafebtn1);
cafebtns[0].setTag(0);
cafebtns[1] = (Button) findViewById(R.id.cafebtn2);
cafebtns[1].setTag(1);
cafebtns[2] = (Button) findViewById(R.id.cafebtn3);
cafebtns[2].setTag(2);
cafebtns[3] = (Button) findViewById(R.id.cafebtn4);
cafebtns[3].setTag(3);
cafebtns[4] = (Button) findViewById(R.id.cafebtn5);
cafebtns[4].setTag(4);
cafebtns[5] = (Button) findViewById(R.id.cafebtn6);
cafebtns[5].setTag(5);
cafebtns[6] = (Button) findViewById(R.id.cafebtn7);
cafebtns[6].setTag(6);
cafebtns[7] = (Button) findViewById(R.id.cafebtn8);
cafebtns[7].setTag(7);
tv_order = (TextView) findViewById(R.id.tv_order);
tv_money = (TextView) findViewById(R.id.tv_money);
}
private void processControl() {
// 設定RadioGroup改選的監聽
MyOnCheckedChangeListener myOnCheckedChangeListener = new MyOnCheckedChangeListener();
sizerg.setOnCheckedChangeListener(myOnCheckedChangeListener);
sugarrg.setOnCheckedChangeListener(myOnCheckedChangeListener);
icerg.setOnCheckedChangeListener(myOnCheckedChangeListener);
// 刷新RadioButton文字
updateRadioButtons(sizerg);
updateRadioButtons(sugarrg);
updateRadioButtons(icerg);
// 刷新CafeButtons文字內容
refreshCafeButton();
}
// RadioGroup 改選的受委任者
class MyOnCheckedChangeListener implements OnCheckedChangeListener {
@Override
public void onCheckedChanged(RadioGroup parent, int id) {
// TODO Auto-generated method stub
updateRadioButtons(parent);
}
}
private void updateRadioButtons(RadioGroup parent){
//取得RadioGroup內RadioButton數量
int RadioButtonNumber=parent.getChildCount();
for(int i=0; i<RadioButtonNumber;i++){
//輪詢RadioGroup內RadioButton
RadioButton radioButton=(RadioButton)parent.getChildAt(i);
if(radioButton.isChecked()){
//若RadioButton被選取時文字顏色變更
radioButton.setTextColor(radioButtonCheckedColor);
//是否為尺寸的RadioGroup
if(sizerg.equals(parent)){
for(int j=0; j<sizerb.length;j++){
if(sizerb[j].equals(radioButton)){
sizeIndex=j;
}
}
//是否為糖的RadioGroup
if(sugarrg.equals(parent)){
for(int j=0; j<sugarrb.length;j++){
if(sugarrb[j].equals(radioButton)){
sugarIndex=j;
}
}
//是否為冰的RadioGroup
if(icerg.equals(parent)){
for(int j=0; j<icerb.length;j++){
if(icerb[j].equals(radioButton)){
iceIndex=j;
}
}
refreshCafeButton();
}else{
//若RadioButton沒被選取時文字顏色變更
radioButton.setTextColor(radioButtonUnCheckedColor);
}
}
}
// 刷新CafeButton文字內容
private void refreshCafeButton() {
for (int i = 0; i < cafebtns.length; i++) {
cafebtns[i].setText(cafeName[i] + "(" + cafePrice[i][sizeIndex]
+ ")");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Cafe.java
package com.CodersCafe.www;
class Cafe {
private int sizeIndex;
private int iceIndex;
private int sugarIndex;
private int cafeType;
private float price;
// 咖啡名稱
static final String[] cafeName = {
"美式咖啡", "招牌咖啡", "海鹽咖啡", "拿鐵咖啡", "義式咖啡",
"卡布奇諾", "焦糖瑪奇朵", "北海道醇濃奶茶"
};
// 尺寸名稱
static final String[] sizeName = {
"小杯", "中杯", "大杯"
};
// 冰名稱
static final String[] iceName = {
"熱飲", "溫飲", "去冰", "半冰", "冰正常"
};
// 糖名稱
static final String[] sugarName = {
"無糖", "三分糖", "半糖", "七分糖", "正常糖"
};
// 咖啡價目表
static final int[][] cafePrice = {
{ 35, 50, 60 }, { 45, 60, 70 },
{ 45, 60, 70 }, { 55, 70, 80 }, { 55, 70, 80 }, { 55, 70, 80 },
{ 65, 80, 90 }, { 65, 80, 90 }
};
public float getPrice() {
return price;
}
public Cafe(int sizeIndex, int iceIndex, int sugarIndex, int cafeType,
float price) {
super();
this.sizeIndex = sizeIndex;
this.iceIndex = iceIndex;
this.sugarIndex = sugarIndex;
this.cafeType = cafeType;
this.price = price;
}
public void setPrice(float price) {
this.price = price;
}
public int getSizeIndex() {
return sizeIndex;
}
public int getIceIndex() {
return iceIndex;
}
public int getSugarIndex() {
return sugarIndex;
}
public int getCafeType() {
return cafeType;
}
//判斷兩杯咖啡是否同一種
public boolean equals(Cafe cafe){
boolean result=true;
if(this.sizeIndex!=cafe.sizeIndex)
result=false;
if(this.cafeType!=cafe.cafeType)
result=false;
if(this.iceIndex!=cafe.iceIndex)
result=false;
if(this.sugarIndex!=cafe.sugarIndex)
result=false;
return result;
}
@Override
public String toString() {
//產生咖啡描述
return cafeName[cafeType]+"("+iceName[iceIndex]+"、"+sugarName[sugarIndex]
+ "、"+sizeName[sizeIndex]+")";
};
}
Order.java
package com.CodersCafe.www;
import java.util.ArrayList;
import java.util.List;
class Order {
private List<Cafe> cafes=null;
public Order(){
cafes=new ArrayList<Cafe>();
}
List<Cafe> getCafes(){
return cafes;
}
void setCafes(List<Cafe> cafes){
this.cafes=cafes;
}
@Override
public String toString() {
String result="";
List<Cafe> tempCafes=new ArrayList<Cafe>();
List<Integer> cafeNumber=new ArrayList<Integer>();
for(int i=0;i<cafes.size();i++){
Cafe sourceCafe=cafes.get(i);
boolean foundSameCafe=false;
for(int j=0; j<tempCafes.size();j++){
if(sourceCafe.equals(tempCafes.get(j))){
cafeNumber.set(j, cafeNumber.get(j)+);
foundSameCafe=true;
break;
}
}
if(!foundSameCafe){
tempCafes.add(sourceCafe);
cafeNumber.add(1);
}
}
//暫時咖啡籃製作完畢,開始製作字串
for(int j=0;j<tempCafes.size();j++){
if(result.length()>0)
result+="、";
if(cafeNumber.get(j)>1)
result+=tempCafes.get(j).toString()+"X"+cafeNumber.get(j);
else
result+=tempCafes.get(j).toString();
}
return result;
}
//加一杯咖啡
boolean add(Cafe cafe){
boolean result=true;
if(cafe==null){
result=false;
}else{
cafes.add(cafe);
}
return result;
}
//刪一杯咖啡
boolean del(Cafe cafe){
boolean result=false;
if(cafe==null){
result=false;
}else{
for(int i=0;i<cafes.size();i++)
if(cafe.equals(cafes.get(i))){
cafes.remove(i);
result=true;
break;
}
}
return result;
}
//計算小計
float getSubtotal(){
float result=0;
for(Cafe tempCafe:cafes){
result+=tempCafe.getPrice();
}
return result;
}
//取得咖啡杯數
int getCafesNumber(){
if(cafes!=null){
return cafes.size();
}
return 0;
}
}