关于Android studio通过循环遍历实现View对象的findviewbyid()和监听器的循环设置

那种图片按钮点完以后消失还让你计数的时候,大多数他们的各种属性和点击事件一样,而且你要是一个一个弄得弄好久,瞬间想到了循环。比如

这种摘竹子的,直接循环解决。

想到了循环解决,先看有几个竹子。一看,有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简单粗暴哈哈

好了就这拜拜。

猜你喜欢

转载自blog.csdn.net/qq_64628470/article/details/129370853