2017-11-10 6 views
0

私はアンドロイドの初心者です。私はCとC++だけを知っています。私はforのループを参照してgithubの参照を見ました。for(int clickableId:clickableIds)とは何ですか?

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

私はC++を知っているため、アンドロイドのループに基づいて範囲を調べています。その構文はループベースの範囲です。しかし、私は参照を取得することはできません。

ので、

  • ループのため、これは何をするのでしょうか?

  • いつ、どこで使うべきですか?

+0

['for'文](https://docs.oracle.com/javase)を参照してください。 /tutorial/java/nutsandbolts/for.html)、ページの下半分です。 –

答えて

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); 
    } 

それはアレイclickableIdsを反復さint clickableId意味します。そこで、最初のR.id.easy_mode_buttonに入り、forループの中にonclicklistenerというメソッドが呼び出されます。

for (int myValue : myArray) {

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

それがforループに入りそう後、onClickListener(this)が呼び出されると、ボタンがクリックされたときonClick()がある:forループ

これは、これはそれのための構文である拡張forループと呼ばれています呼び出される。

0

これはfor-eachループです。コロン(:)は "in"と読みます。イテレータを宣言する必要はないので、ジェネリック宣言を提供する必要はありません(コンパイラはこれを行います)。 Peter Haddadのように、clickableIdはすべての配列clickableIdsを1つずつ取得し、ウィジェット(ここのボタン)をクリック可能に設定するという意味です。

できるだけいつでもfor-eachループを使用して、コードを美しくする必要があります。しかし、現在の要素を削除するために、プログラムがイテレータにアクセスする必要がある場合など、毎回使用することはできません。

関連する問題