我正在尝试根据变量的值设置多个项目的可见性,并且按钮单击时值会更改。我是新人。
我的代码看起来像这样:
int view = 1;
if(view == 1) { Sets a bunch of visibilities}
else if(view == 2) {Sets a different set of visibilities}
else if(view ==3)...etc
然后我有一个on click监听器,它会增加变量,我希望它能再次运行IF语句。
我是一个试图自学的黑客,所以请指出正确的方向,不要求你为我编码。我相信有更好的方法可以做到这一点,让我知道该怎么做,我会做我的功课。
由于
答案 0 :(得分:0)
我不确定你的代码是如何构建的,但这就是我写的方式,可以在每次点击按钮时重新运行。
onClickListener(){
id++ // Or whatever you need to do to the id value
codeThatSetsTheView(id)
}
codeThatSetsTheView (int viewId){
Switch (id)
case 1:
view 1 //Enable the things for view 1
break;
...
}
答案 1 :(得分:0)
为什么不使用switch语句而不是300 IF / ELSE?
switch(view) {
case 1: // implement code
break;
case 2: // implement code
break;
.....
}
在基本的,你可以使用类成员变量来处理所有这些事情更容易:
class myClass extends AnotherClass implements View.OnClickListener {
private static int myVariable;
public myClass(Context ctx, AttributeSet attr) {
super(ctx,attr);
setOnClickListener(this);
}
private void mySetterFunction() {
myVariable = 1; // or set to what ever
}
@Override
public void onClick(View view) {
switch( myVariable ) {
case 1: // do code here
break;
case 2: // do code here
break;
case 3: // do code here
break;
}
}
}
答案 2 :(得分:0)
你可以做很多事情。我发现如果我想多次做某事,最好将这些动作分组到一个函数中。此外,如果您想要在单击某些内容时完成某些操作,那么这就是OnClickListener中onClick(View v)函数的要点。
最后的想法 - 如果你想要多次调用的东西(比如通过if / else块运行),请多次调用它。只需根据需要多次调用函数,并在函数调用之间执行逻辑(如递增整数变量)。