2012-01-31 110 views
1

我創建了一個For循環,它爲每個ImageView設置一個ID和一個ClickListener。當點擊被按下時,OnClickListner或者似乎無法找到該ID,或者根本沒有被調用。Android:陣列項目的監聽器

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 2012-01-31 07:03:52

回答

3

i==myResources.length更改爲i < myResources.length

當前循環將立即退出,除非0 == myResources.length

(整個事件偵聽器的事情是一個很好的誘餌,但。)

+0

不完全 - 我<= ...當我== myResources.length會導致一個越界異常。試試我 barry 2012-01-31 06:39:29

+0

@barry謝謝你,修正:D,我不應該在清晨做這些事情(但至少錯誤會很明顯)。 – 2012-01-31 06:47:01

+0

沒問題。做得好,發現錯誤! – barry 2012-01-31 06:48:43

2

除了與循環問題,監聽器將只用於R.id.block1,它將egnore所有其他視圖事件。你究竟想要達到什麼目的?

+0

我希望myResources數組可以通過將每個ImageView添加到正確的佈局來解決這個問題 – Jonno 2012-01-31 06:47:21

+0

我有8個ImageViews可以點擊,所以不是單獨編寫每個ImageView,而是試圖創建一個很好的循環來整理大量代碼 – Jonno 2012-01-31 06:48:25

+0

但你的onClick只處理bblock1。 – barry 2012-01-31 06:51:08

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

不需要在偵聽器中檢查條件,因爲每個視圖都有專門的偵聽器 – 2012-01-31 08:00:12