2012年2月5日 星期日

[TQC+ Android] 1-3 點餐系統 Use AlertDialog



按下進入點餐系統的Button時 , 跳出AlertDialog呈現菜單列表 , 每樣餐點旁並有CheckBox提供勾選並可再次修改 , 這題在測驗對AlertDialog的使用 , 和AlertDialog.Builder 中 setMultiChoiceItems() 的使用

setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)

items陣列內的Text內容會條列出現在AlertDialog中 , Text旁邊會出現Check , 而Check會根據checkeditems陣列的內容值來決定是否被預先選取 , 然後傳入listener做為多重選取的事件 , 以下是程式碼。


package COM.TQC.GDD01;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class GDD01 extends Activity
{
  private Button button1;
  private TextView text1;
  private String[] s1 = {"美味蟹堡","義式香腸堡","蔬菜水果堡","香蕉潛艇堡","香烤雞肉堡"};
  
  AlertDialog.Builder AB;
  boolean[] checkState = new boolean[5];  
  
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    button1 = (Button) findViewById(R.id.button1);
    text1 = (TextView) findViewById(R.id.text1);
    
    AB = new AlertDialog.Builder(this);
    AB.setTitle(R.string.str2);
    AB.setPositiveButton("確認", DOnClickListener);
    AB.setNegativeButton("離開", DOnClickListener);
    AB.setMultiChoiceItems(s1, checkState , DOnMultiChoiceClickListener);
    
    button1.setOnClickListener(new Button.OnClickListener()
    {      
     @Override
      public void onClick(View v)
      {      
      AB.show();
      }
    });
  }
  
  DialogInterface.OnMultiChoiceClickListener DOnMultiChoiceClickListener = new DialogInterface.OnMultiChoiceClickListener()
  {
 @Override
 public void onClick(DialogInterface dialog, int which, boolean isChecked)
 {  
  // AlertDialog.Builder 會同步更新 checkState陣列的值
 }   
  };
  
  DialogInterface.OnClickListener DOnClickListener = new DialogInterface.OnClickListener()
  {   
 @Override
 public void onClick(DialogInterface dialog, int which)
 {
  // TODO Auto-generated method stub
  switch(which)
  {
   case DialogInterface.BUTTON_POSITIVE:    
    checkFood();
    break;
   
   case DialogInterface.BUTTON_NEGATIVE:    
    break;
  }
 }

 private void checkFood()
 {
  // TODO Auto-generated method stub    
  text1.setText(R.string.str2);
  for(int i=0 ; i< checkState.length ; i++)
  {
   if(checkState[i]) text1.append("\n" + s1[i]);   
  }  
 }
   
  };
}


接下來是main.xml


  
  





P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....


沒有留言:

張貼留言

Google Analytics