Android:在onClick上设置多个按钮选择

时间:2011-12-14 17:40:04

标签: android button onclick

我有一组按钮:

[Button1]
[Button2]
[Button3]
[Button4]
[Button5]
[Button6]

所有这些共享相同的onClick方法:

b.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        Button b = (Button) v;
        Button comp;
        int i = b.getId();
        selected[i] = !selected[i];
        b.setSelected(selected[i]);
        for (int j = 0; j < 6; j++) {
            if (i != j) {
                selected[j] = false;
                comp = lifestyleButtonArray.get(j);

                if(comp.isSelected())
                    comp.setSelected(selected[j]);
                    Log.w(TAG,"[Button] selection for button #"+j+"="+selected[j]);

            }
        }
    }
});

onClick方法的第一部分按预期工作。单击按钮时,切换按钮的“选择”值以更改按钮的颜色(在可绘制的xml文件中定义),然后取消选择所有其他按钮,以便最多在一个按钮上标记为“已选择”时间。

选择部分有效,但按钮不会以适当的颜色重新绘制,因此看起来选择了两个按钮!

我尝试过invalidate和requestLayout,但这没有帮助。有什么建议吗?

编辑:在更多地考虑之后,这里要问的真正问题是:

如何从onClick方法更新不是视图的视图?

在我的例子中,当我选择button1时,我希望能够从按钮2-6中删除选择,但由于按钮2-6不是被调用的视图,它们显示正确的选择值(它们未被选中) )但不要将其UI视图更新为“未选择”颜色!

1 个答案:

答案 0 :(得分:0)

设置按钮的选定状态后,您可以在每个按钮上调用“invalidate()”函数,强制它们在下一个循环中更新。