2011-12-07 8 views
0

リスト内の選択項目の位置を取得する方法。私は以下のコードを使用しています。 OKボタンを押すとint whichButtonが表示されます。しかし、それは常に表示さ-1OKボタンが押されたときに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

を必要な値は、(選択肢のリスト)setSingleChoiceItemsOnClickListenerwhichButtonです。

問題は、それをどのように追跡するかです。より洗練されたソリューションがあるかもしれませんが、これは動作します:

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

関連する問題