2011-12-07 59 views
0

我如何才能獲得列表中選定項目的位置。我使用下面的代碼。按OK按鈕時,我得到int whichButton。但它始終顯示-1按OK按鈕時如何獲得SINGLE_CHOISE_LIST中的選擇位置?

private void filterByLocationDialog(final String[] items){ 
     AlertDialog alert = new AlertDialog.Builder(PictureCollectionActivity.this) 
     .setIcon(R.drawable.icon) 
     .setTitle("Select a Location") 
     .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 

      } 
     }) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       Toast.makeText(PictureCollectionActivity.this, "Now"+whichButton, Toast.LENGTH_SHORT).show(); 

      } 
     }) 
     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 

       /* User clicked No so do some stuff */ 
      } 
     }) 
     .create(); 
     alert.show(); 
    } 

回答

2

你想要的值是在setSingleChoiceItemsOnClickListener(選擇列表)的whichButton

問題是,如何跟蹤它。有可能是更優雅的解決方案,但這個工程:

final int[] selected = new int[1]; 
    AlertDialog alert = new AlertDialog.Builder(this) 
      .setTitle("Select a Location") 
      .setSingleChoiceItems(items, 0, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int whichButton) { 

          selected[0] = whichButton; 
         } 
        }) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int whichButton) { 
        Toast.makeText(WeightTestActivity.this, 
          "Now" + selected[0], Toast.LENGTH_SHORT).show(); 
       } 
      }) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int whichButton) { 
          /* User clicked No so do some stuff */ 
         } 
        }).create(); 
    alert.show(); 
+0

humm,我在想同樣的方式。謝謝你的時間 – Arslan