2010-03-07 28 views
26

Tôi đang sử dụng một ListView trong một AlertDialog để hiển thị một danh sách các mục. Khi người dùng nhấp vào một trong các mục, tôi muốn hộp thoại đóng lại. Tôi sẽ không có bất kỳ nút tác vụ nào trên hộp thoại. Bất kỳ ý tưởng về cách tôi sẽ thực hiện điều này?ListView trong AlertDialog

+0

Bạn cũng có thể xem mẫu này của hộp thoại cảnh báo với listview đi đây [ví dụ demo] (http://goo.gl/W3a4h) – Herry

Trả lời

92

Bạn sẽ có thể làm điều gì đó như:

final CharSequence[] items = {"Foo", "Bar", "Baz"}; 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("Make your selection"); 
builder.setItems(items, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int item) { 
     // Do something with the selection 
    } 
}); 
AlertDialog alert = builder.create(); 
alert.show(); 

page này có một số ví dụ khác về các loại khác nhau của Dialogs.

+5

chỉ việc bỏ qua() trong hàm void onClick() công khai sẽ bỏ qua hộp thoại cho bạn. – Yenchi

+0

Lưu ngày của tôi, Cảm ơn .... – Cabezas

0

Bạn có thể sử dụng bố cục khi xuất hiện hộp thoại cảnh báo .. Dễ dàng hơn để tạo kiểu cho nó theo cách đó. Đối với danh sách trong hộp thoại cảnh báo bạn có thể làm một cái gì đó giống như this

0

Được sử dụng bên dưới mã để hiển thị danh sách tùy chỉnh trong AlertDialog

AlertDialog.Builder builderSingle = new AlertDialog.Builder(
        DialogActivity.this); 
      builderSingle.setIcon(R.drawable.ic_launcher); 
      builderSingle.setTitle("Select One Name:-"); 
      final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
        DialogActivity.this, 
        android.R.layout.select_dialog_singlechoice); 
      arrayAdapter.add("Hardik"); 
      arrayAdapter.add("Archit"); 
      arrayAdapter.add("Jignesh"); 
      arrayAdapter.add("Umang"); 
      arrayAdapter.add("Gatti"); 
      builderSingle.setNegativeButton("cancel", 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
         } 
        }); 

      builderSingle.setAdapter(arrayAdapter, 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          String strName = arrayAdapter.getItem(which); 
          AlertDialog.Builder builderInner = new AlertDialog.Builder(
            DialogActivity.this); 
          builderInner.setMessage(strName); 
          builderInner.setTitle("Your Selected Item is"); 
          builderInner.setPositiveButton("Ok", 
            new DialogInterface.OnClickListener() { 

             @Override 
             public void onClick(
               DialogInterface dialog, 
               int which) { 
              dialog.dismiss(); 
             } 
            }); 
          builderInner.show(); 
         } 
        }); 
      builderSingle.create(); 
      builderSingle.show();