如何获得选择位置在SINGLE_CHOISE_LIST当OK按钮按下



如何获得所选项目在列表中的位置。我使用下面的代码。当OK按钮按下时,我得到int whichButton。但它总是显示-1

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

您想要的值是setSingleChoiceItems中的OnClickListener中的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();

最新更新