2012-01-31 11 views
1

それぞれのImageViewにIDとClickListenerを設定するForループを作成しました。クリックが押されると、OnClickListnerはIDを見つけることができないか、まったく呼び出されません。Android:Listener on array items

public int[] myResources = {R.id.bblock1, R.id.bblock2, R.id.bblock3, R.id.bblock4, R.id.bblock5, R.id.bblock6, R.id.bblock7, R.id.bblock8}; 
    ImageView[] bblock = new ImageView[7]; 

for(int i = 0; i==myResources.length; i++) { 
          bblock[i]=(ImageView)layout.findViewById(myResources[i]); 
          bblock[i].setOnClickListener(ActivityCheck); 

         } 



View.OnClickListener ActivityCheck = new View.OnClickListener(){ 
      public void onClick (View v){ 
       if(v.getId() == (R.id.bblock1)){ 
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/#!/itz_jonno")); 
        startActivity(browserIntent);     
       } 

^^ OnClickListenerはビューを見つけることができません。 配列とループを使用せずに以下のコードは、作業を行い、けれども:

ImageView bblock1=(ImageView)layout.findViewById(R.id.bblock1); 
bbblock1.setOnClickListener(ActivityCheck); 

配列が仕事を文句を言わない理由を任意のアイデアが、標準的なコードだろうか?

+0

使用条件が..switch .. – NovusMobile

答えて

3

i==myResources.lengthi < myResources.lengthに変更してください。

0 == myResources.lengthを除き、現在のループはすぐに終了します。

(全てのイベントリスナーの事はいえ素敵な囮だった。)

+0

ではありません - i <= ... i == myResources.lengthのときは範囲外例外が発生します。私は barry

+0

@バリーは固定しました:D、私は早朝にこれらのことをすべきではありません(しかし、少なくともエラーは明らかです)。 –

+0

問題ありません。まあ、エラーを見つけた! – barry

2

ループでの問題に加えて、あなたのリスナーはR.id.block1のために働くだろう、それは他のすべてのビューのためのイベントをegnoreます。正確に何を達成しようとしていますか?

+0

私はmyResources配列が正しいレイアウトで各ImageViewを追加することでそれを解決することを望んでいました – Jonno

+0

私は8個のImageViewをクリック可能にするので、それぞれを個別に書き出すのではなく、コード – Jonno

+0

しかしonClickはbblock1しか処理しません。 – barry

0
for(int i = 0; i==myResources.length; i++) { 
          bblock[i]=(ImageView)layout.findViewById(myResources[i]); 
          bblock[i].setOnClickListener(
           new View.OnClickListener(){ 
      public void onClick (View v){ 
       if(write u r checking condition here){ 
        start u r suitable activity here.     
       } 
          ); 

         } 
+0

ビューごとに専用のリスナーが存在するため、リスナーの状態を確認する必要はありません –