安卓通知的使用系列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;
    }
    
}


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