那种图片按钮点完以后消失还让你计数的时候,大多数他们的各种属性和点击事件一样,而且你要是一个一个弄得弄好久,瞬间想到了循环。比如
这种摘竹子的,直接循环解决。
想到了循环解决,先看有几个竹子。一看,有6个,好。把这6个竹子的id弄成@+id/im_btn_1、@+id/im_btn_2、@+id/im_btn_3..........这种有规律的,因为循环最简单的那种也就是从一个数开始,然后一直++。所以弄成这样以便循环调用。
好了,想要findviewbyid,你得首先想咋表示id
我有妙招
先弄一个
Resources res =getResources();
这个res有大用,它可以调用函数getIdentifier(),返回int值,大家都知道id类型也是int,所以在循环里别客气,直接int一个变量id进行赋值就好啦
id解决了,那find的控件装哪呢,
有同学就说了,我先把那控件先一个一个声明,再在循环里面一个一个赋值
哎呦你干嘛,这不是又回到起点了?
直接集合类集合一手
弄一个list装里面就行
且看
List<ImageButton> imts=new ArrayList<ImageButton>();
这不就有容器了?
循环中一个一个添加进去就行。
好 看第一个循环
List<ImageButton> imts=new ArrayList<ImageButton>();
Resources res =getResources();
for(int i=1;i<=6;i++){
int id=res.getIdentifier("im_btn_"+i,"id",getPackageName());
ImageButton zhuzi=findViewById(id);
imts.add(zhuzi);
}
这就把那6个竹子装进去了
再然后就要干嘛
监听一手是不是?
监听肯定也是循环啊,因为点击事件都是一样的,都是让他消失再计数加一的
直接foreach就好
for (ImageButton imageButton:imts){
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bamboo++;
imageButton.setBackground(null);
}
});
你要是就不这样弄 就不
那还有办法
从list里面调用元素不是get()一手就好了
你把get(里面弄个i)从0开始循环到5一样的。
所以说遍历最好直接foreach简单粗暴哈哈
好了就这拜拜。