Android Java答题应用:如何优化随机分配答案选项到按钮的代码
嘿,我懂你现在的痛点——这段代码确实能跑,但重复的if-else块看着就头疼,维护起来也麻烦。咱们来把它重构得更简洁优雅,同时保持功能不变!
优化思路
- 先把所有按钮实例一次性存入数组,避免重复调用
findViewById - 用
Collections.shuffle打乱选项列表后,通过循环直接建立选项和按钮的映射,替代冗余的条件判断 - 用
HashMap存储选项到按钮的映射,方便后续快速查找某个选项对应的按钮
优化后的代码
// 1. 一次性获取所有按钮实例,存入数组 Button[] buttons = { findViewById(R.id.buttonA), findViewById(R.id.buttonB), findViewById(R.id.buttonC), findViewById(R.id.buttonD) }; // 2. 初始化选项列表并打乱顺序 List<String> options = new ArrayList<>(Arrays.asList("A", "B", "C", "D")); Collections.shuffle(options); // 3. 建立选项与按钮的映射,同时设置按钮文本 Map<String, Button> optionButtonMap = new HashMap<>(); for (int i = 0; i < buttons.length; i++) { String currentOption = options.get(i); Button currentButton = buttons[i]; // 设置按钮显示的选项文本 currentButton.setText(currentOption); // 记录该选项对应的按钮 optionButtonMap.put(currentOption, currentButton); } // 后续如果需要获取某个选项对应的按钮,直接从Map中取即可 Button buttonForA = optionButtonMap.get("A"); Button buttonForB = optionButtonMap.get("B"); // ...以此类推
为什么这更优?
- 减少冗余代码:去掉了重复的
if-else块,代码行数大幅减少,可读性更强 - 更高效率:只调用一次
findViewById获取所有按钮,避免多次遍历列表查找索引 - 更好的可维护性:如果以后需要增加或减少选项,只需要修改按钮数组和选项列表即可,不需要改动大量条件判断
- 逻辑更清晰:直接通过循环建立映射,逻辑一目了然,不容易出错
内容的提问来源于stack exchange,提问作者FamousSam
相关产品推荐
相关产品推荐

