android dialog —— 多选列表对话框

和单选列表对话框相似,这里需要通过setMultiChoiceItems将array.xml中的数据添加进去。

当单击列表项时会产生Click事件,这里用到的监听器是DialogInterface.OnMultiChoiceClickListener,具体实现如下:

第一步:

添加res/values/array.xml的数据

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string-array name="hobby">
  4. <item>篮球</item>
  5. <item>足球</item>
  6. <item>排球</item>
  7. </string-array>
  8. </resources>

第二步:一个输入框和一个按钮

res/layout/muti_choice_dialog_layout.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:orientation="vertical"
  5. android:layout_width="fill_parent"
  6. android:layout_height="wrap_content">
  7. <EditText android:id="@+id/editText"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="这是一个多选列表对话框"
  11. />
  12. <Button android:id="@+id/button"
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. android:text="显示多选列表对话框"
  16. />
  17. </LinearLayout>

第三步:

src/com/dialog/activity/MutiChoiceDialogActivity.java

  1. package com.dialog.activity;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.app.AlertDialog.Builder;
  5. import android.app.Dialog;
  6. import android.content.DialogInterface;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. public class MutiChoiceDialogActivity extends Activity {
  12. private final int MUTI_CHOICE_DIALOG = 1;
  13. boolean[] selected = new boolean[]{false,false,false};
  14. @Override
  15. public void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.muti_choice_dialog_layout);
  18. Button button = (Button) findViewById(R.id.button);
  19. View.OnClickListener listener = new View.OnClickListener() {
  20. @Override
  21. public void onClick(View view) {
  22. showDialog(MUTI_CHOICE_DIALOG);
  23. }
  24. };
  25. button.setOnClickListener(listener);
  26. }
  27. @Override
  28. protected Dialog onCreateDialog(int id) {
  29. Dialog dialog = null;
  30. switch(id) {
  31. case MUTI_CHOICE_DIALOG:
  32. Builder builder = new AlertDialog.Builder(this);
  33. builder.setTitle("多选列表对话框");
  34. builder.setIcon(R.drawable.basketball);
  35. DialogInterface.OnMultiChoiceClickListener mutiListener =
  36. new DialogInterface.OnMultiChoiceClickListener() {
  37. @Override
  38. public void onClick(DialogInterface dialogInterface,
  39. int which, boolean isChecked) {
  40. selected[which] = isChecked;
  41. }
  42. };
  43. builder.setMultiChoiceItems(R.array.hobby, selected, mutiListener);
  44. DialogInterface.OnClickListener btnListener =
  45. new DialogInterface.OnClickListener() {
  46. @Override
  47. public void onClick(DialogInterface dialogInterface, int which) {
  48. String selectedStr = "";
  49. for(int i=0; i<selected.length; i++) {
  50. if(selected[i] == true) {
  51. selectedStr = selectedStr + " " +
  52. getResources().getStringArray(R.array.hobby)[i];
  53. }
  54. }
  55. EditText editText = (EditText) findViewById(R.id.editText);
  56. editText.setText(selectedStr);
  57. }
  58. };
  59. builder.setPositiveButton("确定", btnListener);
  60. dialog = builder.create();
  61. break;
  62. }
  63. return dialog;
  64. }
  65. }

效果图:

源码下载地址:http://download.csdn.net/source/3222814

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值