2017-12-06 6 views
0

ここで私はハードコーディングしています。私がループに張っていると、onClick関数内のイテレータにアクセスすることはできません。これを動的に行うことは可能ですか?AndroidのX個のオブジェクトに対してonClickルーチンを動的に作成することはできますか?

cardBtns[0].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    cardBtns[1].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    cardBtns[2].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    cardBtns[3].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    cardBtns[4].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
+0

「RecyclerView」を使用してください。 – Kiya

答えて

0

インターフェイス内で使用するには、変数をfinalキーワードで宣言する必要があります。しかし、イテレータは、その値が変更されているので、2番目の変数を使用する必要があるため、最終的なものにはなりません。

for (int i = 0; i < 4; i++) { 
    final int j = i; 
    cardBtns[i].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      view.setText("Button " + String.valueOf(j)); 
     } 
    }); 
} 
関連する問題