我的AlertDialog设置几乎与此链接中描述的相同:https://stackoverflow.com/a/4697761/2593088
我用它来从SD卡中提取照片,所以我在列表中有照片和旁边的名字。如果我只需要一次拉一张照片,它的效果会非常好,但如果我可以选择所有照片并将它们全部拉到一起,那就更好了。问题是只要单击一个对话框就关闭了。我已经搜索了这个方法,但我发现的每种方式都不适用于我需要的东西。一种方法是在对话框OnShow监听器中覆盖onClick监听器,但我只能想象如何覆盖正/负/中性按钮,而不是列表项。在构建对话框时,我也能够在没有使用setMultiChoiceItems的图标的情况下使其工作,所以如果有一种简单的方法来在这一点上添加图标也可以。我只是想知道是否有一种简单的方法可以用我拥有的东西来做,或者我是否必须编写自己的客户适配器或somthing。
任何帮助都是赞赏的。
编辑: 这里有我的工作正常,除了没有图标。
dialog = builder.setAdapter(adapter, null).setMultiChoiceItems(mFileList, null, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1,
boolean arg2) {
String selectedFile = mFileList[arg1];
if(selectedFile.equals("Up One Folder")) selectedFile = "..";
String mChosenFile = tempDir + "/" + selectedFile;
File f = new File(mChosenFile);
if(f.isDirectory()) {
// it is a directory, clear all selections and go to the next directory
selectedImages.clear();
dialog.dismiss();
loadFileList(mChosenFile);
getFiles(false);
} else {
if(arg2) {
selectedImages.add(tempDir + "/" + selectedFile);
}
}
}
})
我希望同时使用setAdapter和setMultiChoiceItems可以正常工作,但如果设置了multichoice项,则设置适配器不会执行任何操作。不幸的是,setMultiChoiceItems没有使用适配器的构造函数。
答案 0 :(得分:1)
我最终不得不编写自己的自定义对话框,而不是使用setMultiChoiceItems。我应该知道,从我注意到没有带适配器的多选构造函数的那一刻起,我就必须这样做。我只是希望有一种解决方法,因为可以使用适配器构建默认列表对话框。希望这会在未来发生变化。
答案 1 :(得分:0)
*我实际上从未在Alert Dialog中使用过适配器,但是我用这种方式实现了多重警报对话框:
LinearLayout settingLayout = new LinearLayout(MainActivity.this) ;
settingLayout.setOrientation(LinearLayout.VERTICAL) ;
final RadioButton radOptionTen = new RadioButton(MainActivity.this) ;
final RadioButton radOptionTwenty = new RadioButton(MainActivity.this) ;
final RadioButton radOptionThirty = new RadioButton(MainActivity.this) ;
final RadioButton radOptionFifty = new RadioButton(MainActivity.this) ;
final RadioButton radOptionHundred = new RadioButton(MainActivity.this) ;
final RadioButton radOptionTwoHundred = new RadioButton(MainActivity.this) ;
radOptionTen.setText("10") ;
radOptionTwenty.setText("20") ;
radOptionThirty.setText("30") ;
radOptionFifty.setText("50") ;
radOptionHundred.setText("100") ;
radOptionTwoHundred.setText("200") ;
radOptionTen.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}) ;
radOptionTwenty.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}) ;
radOptionThirty.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}) ;
radOptionFifty.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}) ;
radOptionHundred.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}) ;
radOptionTwoHundred.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}) ;
settingLayout.addView(radOptionTen) ;
settingLayout.addView(radOptionTwenty) ;
settingLayout.addView(radOptionThirty) ;
settingLayout.addView(radOptionFifty) ;
settingLayout.addView(radOptionHundred) ;
settingLayout.addView(radOptionTwoHundred) ;
new AlertDialog.Builder(UserSettingsActivity.this)
.setIcon(R.drawable.alert_icon)
.setTitle("Title!")
.setMessage("Message...")
.setView(settingLayout)
.setPositiveButton("Save", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.show()
您可以删除对话框的正面和负面按钮,并更改您需要的布局或小部件。我认为,在你的情况下,你想使用按钮,所以用按钮替换单选按钮并删除对话框按钮