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パラメータはリスト内の位置です。

パラメーター

ダイアログ クリックを受けたダイアログ。

クリックされ たボタン(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 に答える