1

我想实现AlertDialog.Builder选定的项目点击事件。以下是我到目前为止所尝试的。我对 Android 很陌生,我不确定如何访问该事件。如何为列表中的每个单独项目实现点击事件?

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;

public class MakeCallAlertDialog {

    public static AlertDialog.Builder getAlertDialog(String strArray[],
            String strTitle, Activity activity) {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
        alertDialogBuilder.setTitle(strTitle);
        alertDialogBuilder.setItems(strArray, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int arg) {
                // TODO Auto-generated method stub
            }
        });

        return alertDialogBuilder;
    }
}
4

3 回答 3

9

OnClickListener由于您为该方法分配了一个特定的参数,因此int参数是列表中的位置

参数

dialog 收到点击的对话框。

which 被点击的按钮(例如 BUTTON1)或被点击的项目的位置

这意味着在您的方法中,您应该能够做到这一点:

public static AlertDialog.Builder getAlertDialog(final String strArray[],
        String strTitle, final Activity activity) {

    AlertDialog.Builder alertDialogBuilder =  
            new AlertDialog.Builder(activity);
    alertDialogBuilder.setTitle(strTitle);

    alertDialogBuilder.setItems(strArray,
            new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
           Toast.makeText(activity, strArray [which], Toast.LENGTH_SHORT).show();

           //rest of your implementation
        }
    });
   return alertDialogBuilder;
}
于 2013-03-06T03:38:05.067 回答
5

在 onClick() 事件中使用 switch 语句为每个按钮编写单击方法。

    @Override
        public void onClick(DialogInterface dialogInterface, int arg) {
            // TODO Auto-generated method stub
            switch (arg) {
               case 0:
                  //you code for button at 0 index click
                  break;
               case 1:
                  //you code for button at 1 index click
                  break;
               default:
                    break;
            }
        }

这里,arg 表示按下的按钮的索引。您还可以使用 strArray[arg] 访问该按钮

于 2013-03-06T04:08:58.527 回答
1

如果您使用为 strArray 选择的单选项目,请在下面查看我的答案:试试这个代码

int selectedItem = 0;

// 这里取 TempSelectOneTypeList = strArray

 AlertDialog.Builder alt_bld = new AlertDialog.Builder(
                                    Activity_Form_Data.this);
                            alt_bld.setTitle("Select One");
                            selectedItem = 0;
                            for (int j = 0; j < TempSelectOneTypeList.length; j++) {

                                if (txt_sub_lable2
                                        .getText()
                                        .toString()
                                        .equals(TempSelectOneTypeList[j].toString())) {
                                    selectedItem = j;
                                }
                            }

                            Log.i(TAG, "Selected Item is " + selectedItem);

                            alt_bld.setSingleChoiceItems(
                                    ArraylistSelectOneTypeList.get(selected),
                                    selectedItem,
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog,
                                                int item) {
                                            selectedItem = item;
                                            // you can ocde here for the perticular selected item
                                        }
                                    });
                            alt_bld.setPositiveButton("OK",
                                    new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog,
                                                int which) {

                                            txt_sub_lable2
                                                    .setText(""
                                                            + TempSelectOneTypeList[selectedItem]
                                                                    .toString());
    }
                                    });
                            alt_bld.setNegativeButton("Cancel",
                                    new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog,
                                                int which) {
                                            dialog.dismiss();

                                        }
                                    });

                            AlertDialog alert = alt_bld.create();
                            alert.show();

希望它能解决你的问题

于 2013-03-06T06:34:43.077 回答