2012-04-09 70 views
0

我想创建一个对话框,其中包含一个简单的列表有2个选择。但我也想在底部添加一个复选框条目。这是代码。如何在android中创建具有多种类型列表的对话框?

final String s1 = "item 1"; 
    final String s2 = "item 2"; 
    final CharSequence[] items = { s1, s2 }; 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    builder.setItems(items, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 

if (items[item].toString().equalsIgnoreCase(s1)) { 
       item1selected(); 

      } else if (items[item].toString().equalsIgnoreCase(s2)) { 
       item2selected(); 
      } 
     } 
    }).create(); 
    builder.setMultiChoiceItems(R.array.select_dialog_item, 
        new boolean[]{false}, 
        new DialogInterface.OnMultiChoiceClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton, 
           boolean isChecked) { 

          preferences.edit().putBoolean(getString(R.string.pref_entry), isChecked).commit(); 
         } 
        }).create(); 
builder.show(); 

此处仅显示复选框项目。

+0

创建一个布局和在布局保持的每个项目比使用的setView()方法在警报对话框设置。 – 2012-04-09 13:54:04

回答

0

你不能把两者结合起来。

setMultiChoiceItems定义为:

public Builder setMultiChoiceItems(int itemsId, boolean[] checkedItems, 
      final OnMultiChoiceClickListener listener) { 
     P.mItems = P.mContext.getResources().getTextArray(itemsId); 
     P.mOnCheckboxClickListener = listener; 
     P.mCheckedItems = checkedItems; 
     P.mIsMultiChoice = true; 
     return this; 
    } 

其重置之前设置的项目。

public Builder setItems(CharSequence[] items, final OnClickListener listener) { 
     P.mItems = items; 
     P.mOnClickListener = listener; 
     return this; 
    } 

做你正在尝试什么样的方法是使用自定义视图在对话框中[1],或使用mergeadapter [1]和不同的名单相结合,一个适配器,并使用setAdapter将其设置为alertdialog 。

[1] http://developer.android.com/reference/android/app/AlertDialog.html#setView(android.view.View,INT,INT,INT,INT)

[2] https://github.com/commonsguy/cwac-merge

相关问题