按下進入點餐系統的Button時 , 跳出AlertDialog呈現菜單列表 , 每樣餐點旁並有CheckBox提供勾選並可再次修改 , 這題在測驗對AlertDialog的使用 , 和AlertDialog.Builder 中 setMultiChoiceItems() 的使用
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]); } } }; }
P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....
沒有留言:
張貼留言