主要代码
使用
private AlertDialog alertDialog3;
final boolean[] checkedItems={true,false,true,false,false,true,true
// true,false,true,false,false,true,
// true,false,true,false,false,true
};
final String[] items = {
"sensor11", "sensor2", "sensor3", "sensor4", "sensor5", "sensor6",
//"sensor111", "sensor2", "sensor3", "sensor4", "sensor5", "sensor6"
};
dialog代码
public void showMutilAlertDialog(View view){
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(deviceInfoActivity);
alertBuilder.setTitle("请选择传感器");
/**
*第一个参数:弹出框的消息集合,一般为字符串集合
* 第二个参数:默认被选中的,布尔类数组
* 第三个参数:勾选事件监听
*/
alertBuilder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean isChecked) {
if (isChecked){
Toast.makeText(deviceInfoActivity, "选择" + items[i], Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(deviceInfoActivity, "取消选择" + items[i], Toast.LENGTH_SHORT).show();
}
}
});
alertBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
for (int i1=0;i1<checkedItems.length;i1++){
Log.i("checkedItems",checkedItems[i1]+"---");
}
Log.i("checkedItems",checkedItems.length+"---长度");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//alertDialog3.dismiss();
}
});
alertBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
alertDialog3.dismiss();
}
});
alertDialog3 = alertBuilder.create();
alertDialog3.show();
final ListView listView = ((AlertDialog) alertDialog3).getListView();
//设置dialog的宽高
listView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
int height = v.getHeight();
int maxHeight = getResources().getDisplayMetrics().heightPixels*5/10;
if(height>maxHeight){
ViewGroup.LayoutParams layoutParams = listView.getLayoutParams();
layoutParams.height = maxHeight;
listView.setLayoutParams(layoutParams);
}
}
});
}