如何获得所选项目在列表中的位置。我使用下面的代码。当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();