列表对话框是对话框的一种常见形式,在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;
}
}