2013-03-06 66 views
1

我想实现AlertDialog.Builder所选项目的点击事件。以下是我迄今为止所尝试的内容。我对Android很新,我不确定如何访问该事件。如何实现列表中每个单独项目的点击事件?如何实现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

只需填写这是在你的代码生成的'的onClick()'方法。 – 2013-03-06 03:08:58

+0

如何实现列表中每个单独项目的点击事件?那么面对 – Kalanamith 2013-03-06 03:10:33

+0

@Kalanamith你应该接受其中一个答案,他们都会告诉你如何处理点击事件。 – 2013-03-09 18:54:02

回答

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

在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 [参数]

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 2013-03-06 06:40:52

+0

不客气:) – Maulik 2013-03-06 06:50:18

相关问题