在软件中,radiobutton和checkbox是比较常用的,前者表示单选,后者表示多选。但是在实际项目中,并不会仅仅只是单选多选这么简单,在这里,我分享一下我在写软件过程中所涉及到的拓展。
首先说一下我的需求,在一个radioGroup中有多个radiobutton,每选择一个会获得不同的分数。注意:是选择而不是点击
在一个页面中,用户可能只会选择其中的一部分(类似于做选择题,并没有把题做完,只做了其中一部分)。而且用户可能选择其中一个按钮后发现不对,然后更改选择,点击其他按钮,最后当下次返回该界面的时候,已经选择的题不应该还能再选,没选择的题应该可以再选。
我们来认真分析每一个需求:
1.每个按钮对应 不同的值,所以单纯的点击监听事件是会出错的,比如三个按钮,对应的值分别为1,2,3.点击第一个后发现不对,又点击第二个,分数就变为1+2=3.这是不对的。怎么解决呢?我的方法是根据点击次数重写监听事件。具体点说就是每个按钮如果点击次数为奇数表示用户选择了按钮,就加对应的分数,并且把其他按钮设置为不可点击。如果为偶数,表示用户双击了按钮,就减去对应的分数,并把其他按钮设置为可以点击。那么,用户点击后就会有分数,如果用户发现不对,双击按钮后分数还原,可以继而去选择其他的按钮。那么这个问题就完美解决了。
代码如下:
radioButton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean po=true; if(po){ score++;po=false; radioButton3.setEnable(false);} else{ score--;po=true; radioButton3.setEnable(true); radioGroup.clearCheck();//清除所有选项
}
}
2.用户只选择了其中一部分,那么我们应该用对应数量的Boolean变量来记录,一旦用户点击按钮&#x