尝试根据选择单选按钮保存无线电组的状态

时间:2011-10-27 17:05:33

标签: java android

我正在开展一个项目,我在几个广播组中有很多单选按钮。我想要做的是根据第一个无线电组中的特定按钮保存所有无线电组的配置。例如,第一个无线电组称为选择,我有4个不同的选择单选按钮。当我从该组内的4个按钮切换时,我希望其他无线电组按钮自动填充到它们之前的状态,我还想保存当前按钮切换时的配置。广播组。因此,例如,如果第一个无线电组中的单选按钮被切换,它将记住前一个单选按钮的配置,并在返回到该视图时自动再次加载。

1 个答案:

答案 0 :(得分:1)

创建一个模型,模拟所有这些。使用属性更改侦听器(或许多其他侦听器)允许您侦听状态更新。只要您在模型上调用setter,状态就会更新。

例如,当您将外部单选按钮组设置为第二个按钮时,模型可以为依赖于该状态的所有按钮抛出属性更改事件。内部单选按钮状态的getter取决于外部按钮的状态。

您可能需要在视图中添加侦听器,以侦听按钮上的用户操作。这些侦听器中的操作将调用模型上的setter。小心不要以这种方式导致递归事件。

示例:

这是您可以构建的模型的示例。假设您有一个带有2个按钮的外部单选按钮组和带有3个按钮的单个内部按钮组。无论选择的外部按钮如何,内部组选项始终相同。

public class Model {
    private int outerSelected = 0; // 0 or 1
    private InnerModel[] innerModels = new InnerModel[2];

    private class InnerModel {
        private int selected = 0; // 0, 1, or 2

        public void setSelected(int selected) {
            this.selected = selected;
            // Send event
        }

        public int getSelected() {
            return selected;
        }
    }

    public int getSelectedInnerModel() {
        return innerModels[outerSelected];
    }

    public int setOuterSelected(int outerSelected) {
        this.outerSelected = outerSelected;
        // send event for selectedInnerModel change
        // If you use beans binding, this should cause the view to re-query the 
        // getSelected on the InnerModel as well
    }
}

我不建议您实际使用整数。枚举是一个更好的主意,但我没有写出来。或者,您可以在视图中将此Model类设为私有。