按下進入點餐系統的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皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....



沒有留言:
張貼留言