2013-03-06 3 views
1

Я хочу реализовать AlertDialog.Builder выбранных элементов click event. Ниже я попытался до сих пор. Я совершенно новый для Android, и я не уверен, как получить доступ к этому событию. Как реализовать событие click для каждого отдельного элемента в списке?Как реализовать событие AlertDialog.Builder для выбранного элемента click?

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

Просто заполните 'OnClick()' метода, который был создан в коде. –

+0

Как реализовать событие click для каждого отдельного элемента в списке? То, что um обращается к – Kalanamith

+0

@ Kalanamith, вы должны принять один из ответов, все они показывают вам, как обрабатывать событие click. –

ответ

7

Поскольку вы зададите OnClickListener специфичный для данного метода, параметр int является position in the list:

Параметры

диалог Диалог, который получил щелчок.

который Кнопка, которая была нажата (например, 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; 
} 
5

в операторе switch использования onClick() для записи метода click для каждой кнопки.

@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

Yep Thank You :) – Kalanamith

+0

Добро пожаловать :) – Maulik

Смежные вопросы