2013-03-06 3 views
1

AlertDialog.Builder 선택한 항목 클릭 이벤트를 구현하고 싶습니다. 아래는 지금까지 내가 시도한 것입니다. 나는 Android에 상당히 익숙하며 그 이벤트에 액세스하는 방법을 모르겠습니다. 목록의 각 개별 항목에 대한 클릭 이벤트를 구현하는 방법은 무엇입니까? 그 방법의 전용 OnClickListener를 할당하기 때문에AlertDialog.Builder 선택한 항목 클릭 이벤트를 구현하는 방법은 무엇입니까?

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; 
    } 
} 
+0

그냥 코드에서 생성 된'온 클릭()'방식을 기입를 해결할 바랍니다. –

+0

목록의 각 개별 항목에 대한 클릭 이벤트를 구현하는 방법은 무엇입니까? 그게 음 ......... – Kalanamith

+0

@Kalanamith에게 대답 중 하나를 받아 들여야합니다. 그들은 모두 클릭 이벤트를 처리하는 방법을 보여줍니다. –

답변

7

int 매개 변수는 position in the list입니다 :

매개 변수

대화 클릭을받은 대화.

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; 
} 
: 항목의 위치이 당신의 방법 안에 의미

을 클릭 또는 (예 : Button1을) 클릭 된 버튼이 작업을 수행 할 수 있어야한다을

onClick() 이벤트의

5

은 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은 [인수]

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

는 문제

+0

예 고맙습니다. – Kalanamith

+0

당신은 환영합니다 :) – Maulik