列表對話框是對話框的一種常見形式,在android開發中使用比較普遍,下面我們來介紹一個它的使用方式。
整體思路:在xml文件中定義三個button控件,並分別設置它們的點擊事件,在第一個點擊事件中實例化一個AlertDialog.Builder對象,並設置每一個item的點擊事件,在第二個和第三個點擊事件中分別實例化一個AlertDialog.Builder對象,並設置單選和多選item的點擊事件。
MainActivity.java文件:
public class MainActivity extends Activity {
private Button button2;
private Button button3;
private Button button4;
// 定義字符串序列 定義3個item列表選項
private final CharSequence[] items={"北京","上海","廣州"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button2=(Button)findViewById(R.id.button2);
button3=(Button)findViewById(R.id.button3);
button4=(Button)findViewById(R.id.button4);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setTitle("請選擇以下城市");
//使用列表對話框的時候不能設置message的內容,這樣會覆蓋列表
// builder.setMessage("請選擇以下城市");
builder.setItems(items, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
CharSequence select_item=items[which];
Toast.makeText(MainActivity.this,"-->>"+select_item, 1).show();
}
});
AlertDialog dialog=builder.create();
dialog.show();
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setTitle("請選擇以下城市");
builder.setSingleChoiceItems(items, -1, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
CharSequence select_item=items[which];
Toast.makeText(MainActivity.this, select_item, 1).show();
dialog.dismiss();//使對話框消失
}
});
AlertDialog dialog=builder.create();
dialog.show();
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setTitle("請選擇以下城市");
// 第二個參數表示默認被選中的選項,如果爲null表示沒有默認被選中
// 使用StringBuffer追加,中間用逗號分隔開
// 第一個參數可以使用items(本類中定義的字符序列),也可以使用在values的strings.xml中定義string-array的方式
builder.setMultiChoiceItems(R.array.city, new boolean[] {false,true,false}, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
}
});
builder.setPositiveButton("確定", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
// 直接獲取dialog的選中值
}
});
AlertDialog alertDialog=builder.create();
alertDialog.show();
}
});
}
@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;
}
}