“for(int clickableId:clickableIds)”有什么作用?

时间:2017-11-10 10:10:02

标签: java android arrays for-loop

我是android的新手。我只知道C和C ++。我在github引用上看到了for循环。

for (int clickableId : clickableIds) {
            view.findViewById(clickableId).setOnClickListener(this);
        }

我用google搜索基于android的循环范围,因为我知道C ++并且在C ++中语法是基于范围的循环。但是,我无法得到任何参考。

所以,

  • 这个for循环有什么作用?

  • 我应该在何时何地使用它?

2 个答案:

答案 0 :(得分:2)

这是github中的整个代码:

  final int[] clickableIds = new int[]{
            R.id.easy_mode_button,
            R.id.hard_mode_button,
            R.id.show_achievements_button,
            R.id.show_leaderboards_button,
            R.id.sign_in_button,
            R.id.sign_out_button
    };

    for (int clickableId : clickableIds) {
        view.findViewById(clickableId).setOnClickListener(this);
    }

这意味着int clickableId正在遍历数组clickableIds。所以它输入了第一个R.id.easy_mode_button然后将调用for循环onclicklistener方法。

这个for循环称为增强型循环,这是它的语法:

for (int myValue : myArray) {

onClickListener(this) //this means current class is implementing onClickListener. 

因此,在进入for循环后,调用onClickListener(this)并在单击按钮时调用onClick()

答案 1 :(得分:0)

这是一个for-each循环。当你看到冒号(:)时,将它读作"在"中。您不必声明迭代器,因此您不必为它提供通用声明(编译器为我们做了)。就像Peter Haddad所说,这意味着clickableId将逐个获得所有数组clickableIds值,并将小部件(此处的按钮)设置为可点击。

你应该随时使用for-each循环,它真正美化你的代码。但是你不能每次都使用它,例如,如果程序需要访问迭代器以删除当前元素......