gpt4 book ai didi

android - 来自枚举的 AlertDialog Builder setSingleChoiceItems

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:06 25 4
gpt4 key购买 nike

我有一个简单的 AlertDialog,其中包含两个元素的 setSingleChoiceItems 列表,效果很好。

final CharSequence[] blackwhite = {"White", "Black"};

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);


alertDialogBuilder.setTitle("Title");
alertDialogBuilder
.setCancelable(false)
.setSingleChoiceItems(blackwhite, -1,null)
.setPositiveButton("Start", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ListView lw = ((AlertDialog) dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());

// Do something with checkedItem
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});

AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

在剩下的代码中,这两项实际上对应一个枚举:

public enum Player {
WHITE, BLACK
}

是否有一种优雅的方式可以直接在 setSingleChoiceItems 中使用枚举,而无需手动转换为 String/CharSequence?例如,如果我稍后决定仅在枚举中将“WHITE”更改为“GREEN”,这也应该自动显示在警报对话框中。

最佳答案

您可以使用 toString() 方法获取 Player 的字符串值。

Player.WHITE.toString(); // returns "WHITE"

你可以这样做:

public enum Player {

WHITE, BLACK, GREEN, PURPLE

public static String[] getValues() {
String[] strs = new String[Player.values().length];
int i = 0;

for (Player p: all)
strs[i++] = p.toString().toLowerCase();

return strs; // ["white", "black", "green", "purple"]
}
}

希望对您有所帮助!

关于android - 来自枚举的 AlertDialog Builder setSingleChoiceItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35665498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com