安卓通知的使用系列4:对话框通知的使用之列表对话框、单选列表对话框、多选列表对话框

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章