0

我的 AlertDialog 设置与此链接中描述的设置几乎相同:https ://stackoverflow.com/a/4697761/2593088
我用它从 SD 卡中提取照片,所以我在列表中拥有照片和旁边的名称。如果我一次只需要拉一张照片,它会很好,但如果我可以选择所有照片并一次将它们全部拉出来会更好。问题是一旦单击对话框就会关闭。我已经搜索了解决这个问题的方法,但我发现的每种方法都不适用于我需要的东西。一种方法是覆盖对话框 OnShow 监听器中的 onClick 监听器,但我只能弄清楚如何覆盖正/负/中性按钮,而不是列表项。在构建对话框时,我也能够在没有使用 setMultiChoiceItems 的图标的情况下使其工作,所以如果有一种简单的方法可以在此时添加图标也可以。一世'
任何帮助表示赞赏。

编辑:这是我所拥有的,除了没有图标外,它工作得很好。

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 会起作用,但是如果设置了多选项目,则设置适配器不起作用。不幸的是 setMultiChoiceItems 没有使用适配器的构造函数。

4

2 回答 2

1

我最终不得不编写自己的自定义对话框,而不是使用 setMultiChoiceItems。从我注意到没有带有适配器的多选构造函数的那一刻起,我就应该知道我必须这样做。我只是希望有办法解决它,因为可以使用适配器构建默认列表对话框。希望这种情况在未来有所改变。

于 2013-07-26T18:38:10.933 回答
0

*我实际上从未将适配器与警报对话框一起使用,但我已经使用这种方式来实现多选警报对话框:

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() 

您可以删除对话框的正面和负面按钮,并更改您需要的布局或小部件。我认为,在你的情况下,你想使用按钮,所以用按钮替换单选按钮并删除对话框按钮

于 2013-07-17T21:24:03.527 回答